Reproducir / pausar vídeo HTML 5 usando jQuery


Estoy tratando de controlar videos HTML5 usando jQuery. Tengo dos clips en una interfaz con pestañas, hay seis pestañas en total, las otras solo tienen imágenes. Estoy tratando de hacer que los clips de video se reproduzcan cuando se haga clic en su pestaña y luego se detengan cuando se haga clic en cualquiera de los otros.

Esto debe ser una cosa simple de hacer, pero parece que no puedo hacer que funcione, el código que estoy usando para reproducir el video es:

$('#playMovie1').click(function(){
  $('#movie1').play();
      });

He leído que el elemento video necesita ser expuesto en una función para poder controlarlo, pero no puede encontrar un ejemplo. Soy capaz de hacer que funcione usando JS:

document.getElementById('movie1').play();

Cualquier consejo sería genial. Gracias

Author: Barny83, 2011-01-10

15 answers

Su solución muestra el problema aquí {play no es una función de jQuery sino una función del elemento DOM. Por lo tanto, debe invocarlo sobre el elemento DOM. Da un ejemplo de cómo hacer esto con las funciones DOM nativas. El equivalente de jQuery {si desea hacer esto para encajar con una selección de jQuery existente be sería $('#videoId').get(0).play(). (get obtiene el elemento DOM nativo de la selección de jQuery.)

 292
Author: lonesomeday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-10 12:58:31

Así es como me las arreglé para hacer que funcione:

jQuery( document ).ready(function($) {
    $('.myHTMLvideo').click(function() {
        this.paused ? this.play() : this.pause();
    });
});

Todas mis etiquetas HTML5 tienen la clase 'myHTMLvideo'

 47
Author: Miguel Tavares,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-03 12:23:27

Puedes hacer

$('video').trigger('play');
$('video').trigger('pause');
 36
Author: wonder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 02:01:58

¿Por qué necesita usar jQuery? La solución propuesta funciona, y probablemente sea más rápida que construir un objeto jQuery.

document.getElementById('videoId').play();
 20
Author: sudo work,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-11 18:39:37

Para pausar varios videos he encontrado que esto funciona muy bien:

$("video").each(function(){
    $(this).get(0).pause();
});

Esto se puede poner en una función de clic que es bastante útil.

 19
Author: Josh Holmes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-25 06:51:59

Como una extensión de la respuesta de lonesomeday, también puede usar

$('#playMovie1').click(function(){
    $('#movie1')[0].play();
});

Observe que no hay ninguna función get() o eq() llamada a jQuery. Matriz de DOM utilizada para llamar a la función play (). Es un atajo a tener en cuenta.

 13
Author: ozanmuyes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-24 13:37:32

Me gusta este:

$('video').click(function(){
    this[this.paused ? 'play' : 'pause']();
});

Espero que ayude.

 10
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-04 16:36:57

Uso FancyBox y jQuery para incrustar un video. Dale una identificación.

Tal vez no la MEJOR solución podría alternar reproducir/pausar de manera diferente - pero fácil para mí y FUNCIONA! :)

En el

`

<input type="hidden" id="current_video_playing">

<input type="hidden" id="current_video_status" value="playing">

<video id="video-1523" autobuffer="false" src="movie.mp4"></video>

<script>

// Play Pause with spacebar

$(document).keypress(function(e) { 

    theVideo = document.getElementById('current_video_playing').value

    if (e.which == 32) {

        if (document.getElementById('current_video_status').value == 'playing') {

            document.getElementById(theVideo).pause();

            document.getElementById('current_video_status').value = 'paused'

        } else {

            document.getElementById('current_video_status').value = 'playing'

            document.getElementById(theVideo).play();

        }

    }

});

</script>`
 4
Author: Alexander W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-30 02:52:54

Como nota, asegúrese de verificar si el navegador admite la función de video, antes de intentar invocarla:

if($('#movie1')[0].play)
    $('#movie1')[0].play();

Eso evitará errores de JavaScript en navegadores que no admiten la etiqueta de video.

 1
Author: Alex W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-27 16:05:21

Use esto.. $('#video1').attr({'autoplay':'true'});

 0
Author: Antares500,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-22 19:26:04

También hice que funcionara así:

$(window).scroll(function() {
    if($(window).scrollTop() > 0)
        document.querySelector('#video').pause();
    else
        document.querySelector('#video').play();
});
 0
Author: Jasper Chang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-25 06:51:23

@loneSomeday lo explicó maravillosamente, aquí una solución que también podría darle una buena idea de cómo lograr la funcionalidad de reproducción/pausa

Reproducir / pausar el video al hacer clic

 0
Author: sheelpriy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:28

Mediante jQuery usando selectores

$("video_selector").trigger('play');  
$("video_selector").trigger('pause');
$("div.video:first").trigger('play');$("div.video:first").trigger('pause');
$("#video_ID").trigger('play');$("#video_ID").trigger('pause');

Por Javascript usando ID

video_ID.play();  video_ID.pause();

O

document.getElementById('video_ID').play();  document.getElementById('video_ID').pause();
 0
Author: user1570636,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-27 16:26:23
<video style="min-width: 100%; min-height: 100%; " id="vid" width="auto" height="auto" controls autoplay="true" loop="loop" preload="auto" muted="muted">
<source src="video/sample.mp4" type="video/mp4">
<source src="video/sample.ogg" type="video/ogg">
</video>
<script> 
$(document).ready(function(){
document.getElementById('vid').play(); });
</script> 
 0
Author: Anusuya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 06:11:38

Estos son los métodos fáciles que podemos usar

En la función de clic del botón de jquery

$("#button").click(function(event){
    $('video').trigger('play');
    $('video').trigger('pause');
}

Gracias

 0
Author: subindas pm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-28 05:08:15