web-dev-qa-db-fra.com

YouTube a abandonné la prise en charge de l'heure de démarrage dans les URL directes et l'intégration de vidéos

Récemment, on pouvait utiliser #t=2m0s ou #t=120 pour définir l'heure de début des liens directs:

http://www.youtube.com/watch?v=Fk2bUvrv-Uc#t=2m30s

ainsi que pour intégrer des vidéos:

<iframe width="420" height="315" \
src="http://www.youtube.com/embed/Fk2bUvrv-Uc#t=2m30s" \
frameborder="0" allowfullscreen></iframe>

Il semble maintenant que YouTube ait abandonné le support de l'heure de démarrage et que ce qui précède ne fonctionne plus. Comment puis-je maintenant faire référence à des vidéos avec une heure de début particulière?

34
ivanzolotov

Intégrer des vidéos

On dirait qu'un paramètre différent est utilisé maintenant - start=<number of seconds> (voir ce blog et documentation ).

Exemple:

<iframe width="420" height="315" frameborder="0" allowfullscreen
        src="http://www.youtube.com/embed/Nc9xq-TVyHI?start=110&end=119"></iframe>

Liens directs

Pour les liens directs, il suffit simplement de remplacer # par &:

http://www.youtube.com/watch?v=Fk2bUvrv-Uc&t=2m30s
58
ceasar

Vous pouvez utiliser & t = au lieu de # t =

14
Nick

YouTube a abandonné la prise en charge de l'heure de démarrage pour les vidéos intégrées. Nous devons maintenant utiliser directement les paramètres start=N&end=M en secondes, en fonction de leur nouvelle API, ou écrire du code supplémentaire qui transforme notre ancienne notation #t=(n)m(n)s en un nouveau style compatible API.

3
ivanzolotov

Le clip vidéo a pu fonctionner en fonction du début et de la fin, mais le code exact doit être le suivant:

? start = x & end = y

où x est l'heure de début en secondes et y l'heure de fin en secondes

si la '?' n'est pas présent cela ne fonctionne pas. De plus, le code doit être placé directement après l'URL SANS espace ou cela ne fonctionne pas.

2
dbldutch

J'ai eu un grand nombre de vidéos chapeautées en utilisant cette méthode avec un plugin JQuery. J'ai adapté le plugin pour que vous puissiez continuer à utiliser la notation (n) m (n) s. Vous pouvez changer cela assez facilement en récupérant la valeur #t de l'URL au lieu de l'attribut data dans lequel je la stocke.

(function( $ ) {    
    $.fn.videoChapters = function(iframeID) {
        if(typeof window.orig_video === 'undefined') {
            window.orig_video = [];
        }
        window.orig_video[iframeID] = $('#'+iframeID).clone();

        var chapterContainer = this;
        $(this).find('a').on('click', function(e) {
                e.preventDefault();
                $('#'+iframeID).remove();
                $(chapterContainer).prevAll('.video-iframe').first().find('h3').after(window.orig_video[iframeID]);

                var video = $('#'+iframeID);
                if(typeof window.video_source === 'undefined') {
                    window.video_source = [];
                }

                if(typeof window.video_source[iframeID] === 'undefined') {
                    window.video_source[iframeID] = $(video).attr('src');
                }
                /*  to use it with a normal anchor change this to something like the below, of course it will vary for URL
                 *  so it'd be better to use a regex, but I'll let someone else worry about that.
                 *
                 *   var str = $(e.target).attr('href').split('#t')[1];
                 *   var nstr = $(str).split("s")[0];
                 *   var mstr = $(nstr).split("m");
                 *   var min = Number(mstr[0]);
                 *   var sec = Number(mstr[1]);
                 *   
                 * */

                var seconds = $(e.target).data('seconds');

                /* youtube dropped old min/secs format, now we convert what's there to pure seconds */
                var splsec = seconds.split('m');
                var min = Number(splsec[0]);
                var sec = Number(splsec[1].split('s')[0]);

                min = min * 60;

                var total = min + sec; 

                var newSource = window.video_source[iframeID] + "?start="+total+"&autoplay=1&rel=0";
                $(video).attr('src', newSource);
        });

    };  
})( jQuery );
1
sijpkes

Les heures de début et de fin utilisant le code intégré iframe ne fonctionnent pas avec mon test. Ce qui fonctionne pour moi est ce code:

De:

http://www.youtube.com/embed/[VIDEOID]

À:

http://www.youtube.com/v/[VIDEOID]&start=[SECONDS]&end=[SECONDS]

<object width="640" height="385">
<param name="movie" value="http://www.youtube.com/v/[VIDEOID]&start=100&end=500" />
<param name="allowscriptaccess" value="always" />
<embed src="http://www.youtube.com/v/[VIDEOID]&start=100&end=500" type="application/x-shockwave-flash" allowscriptaccess="always" width="640" height="385" />
</object>
0
Leoj Etagram

Cela semble fonctionner (encore?) Avec le # t =, au moins pour les URL directes . L'URL indiquée: https://www.youtube.com/watch?v=Fk2bUvrv-Uc# t = 2m30s fonctionne, c’est-à-dire qu’il passe à 2min 30sec. Je l’ai testé sur FF, Chrome, IE11 . Mais il est probablement préférable d’utiliser & t =, & est le caractère de concaténation des arguments d’URL commun.

0
Paul Gobée