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=<number of seconds>
(请参阅 this blog 和 documentation)。
例子:
<iframe frameborder="0" allowfullscreen
src="http://www.youtube.com/embed/Nc9xq-TVyHI?start=110&end=119"></iframe>
直接链接
对于直接链接,只需将#
替换为&
就足够了:
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&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 开始时间支持?的主要内容,如果未能解决你的问题,请参考以下文章
将 Youtube 视频嵌入 Facebook 并以特定时间码播放