YouTube 在直接 URL 和嵌入视频中放弃了 #t 开始时间支持?

Posted

技术标签:

【中文标题】YouTube 在直接 URL 和嵌入视频中放弃了 #t 开始时间支持?【英文标题】:YouTube dropped #t start time support in direct URL and embed videos? 【发布时间】:2013-06-27 02:04:35 【问题描述】:

最近,可以使用#t=2m0s#t=120 设置直接链接的开始时间:

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

以及嵌入视频:

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

现在看来,YouTube 放弃了 #t 开始时间支持,以上内容不再适用。我现在如何放置对具有特定开始时间的视频的引用?

【问题讨论】:

+1 但不仅适用于“嵌入视频”,还适用于任何 URL 参考。您的问题可以更笼统地涵盖所有这些情况,更容易在谷歌上搜索并帮助更多人:) 【参考方案1】:

嵌入视频

现在似乎使用了不同的参数 - start=&lt;number of seconds&gt;(请参阅 this blog 和 documentation)。

例子:

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

直接链接

对于直接链接,只需将# 替换为&amp; 就足够了:

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

【讨论】:

谢谢。尽管最好找到一种方法将组合参数与分钟和秒一起使用,例如t=2m0s 而不是仅秒参数,例如t=120。 我知道,但这不取决于你和我,而是来自 youtube 的开发人员团队 :-) 这不适用于 youtube 本身的 cmets。【参考方案2】:

您可以使用 &t= 代替 #t=

【讨论】:

【参考方案3】:

YouTube 放弃了对嵌入视频的 #t start time 支持。现在我们需要 ether 根据他们的新 API 在几秒钟内直接使用 start=N&amp;end=M 参数,或者编写一些额外的代码将我们旧的 #t=(n)m(n)s 符号转换为新的 API 兼容样式。

【讨论】:

【参考方案4】:

我能够根据开始和结束让视频剪辑工作,但确切的代码需要如下:

?start=x&end=y

其中 x 是以秒为单位的开始时间,y 是以秒为单位的结束时间

如果'?'不存在它不起作用。此外,代码需要直接放在 URL 之后,没有任何空格,否则它不起作用。

【讨论】:

【参考方案5】:

我有大量的视频章节使用这种方法和一个 JQuery 插件。我已经修改了插件,以便您可以继续使用 (n)m(n)s 表示法。你可以很容易地改变它,从 URL 中获取 #t 值,而不是我存储它的 data 属性。

(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 );

【讨论】:

【参考方案6】:

使用 iframe 嵌入代码的开始和结束时间在我的测试中不起作用。对我有用的是这段代码:

发件人:

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

收件人:

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

<object  >
<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"   />
</object>

【讨论】:

【参考方案7】:

它似乎与 #t= 一起工作(再次?),至少对于直接 URL。 规定的网址: https://www.youtube.com/watch?v=Fk2bUvrv-Uc#t=2m30s 有效,即:它跳到 2 分 30 秒。 我在 FF、Chrome、IE11 上对此进行了测试。 但最好使用 &t= , & 是常见的 URL 参数连接字符。

【讨论】:

您是否测试过它是否可以在 iframe 中嵌入视频?它对我不起作用。【参考方案8】:

使用

/watch?v=<videoID>&t=<s>

<videoID>=id of the video
<t>=number of seconds to skip

例子:

https://m.youtube.com/watch?t=58&v=9W35QxCZnK4

视频从 58 秒开始 或

https://www.youtube.com/watch?t=120&v=9W35QxCZnK4

视频从 2 分钟开始

【讨论】:

以上是关于YouTube 在直接 URL 和嵌入视频中放弃了 #t 开始时间支持?的主要内容,如果未能解决你的问题,请参考以下文章

单个嵌入 URL 中的多个 YouTube 视频

URL 清理导致嵌入式 YouTube 视频的刷新

Youtube 嵌入视频 - 删除最终信息屏幕

将 Youtube 视频嵌入 Facebook 并以特定时间码播放

YouTube Vimeo 视频 ID 来自嵌入代码或来自带有 PHP 正则表达式 RegEx 的 URL

仅使用 url 嵌入视频