youtube如何支持从视频的任何部分开始播放?

时间:2009-10-27 19:41:43

标签: linux video hosting

基本上我正在尝试复制YouTube从托管电影的任何部分开始播放视频的功能。因此,如果您有60分钟的视频,用户可以直接跳到30分钟标记,而不会播放前30分钟的视频。有没有人知道YouTube如何实现这一目标?

4 个答案:

答案 0 :(得分:3)

玩家可以正常打开HTTP资源。当您点击搜索栏时,播放器会请求该文件的不同部分。

它传递一个这样的标题:

RANGE: bytes-unit = 10001\n\n 

并且服务器从该字节范围提供资源。根据编解码器,它需要读取,直到它到达同步帧开始播放

答案 1 :(得分:2)

视频是一系列以帧速率播放的帧。也就是说,关于可以解码的帧的顺序有一些规则。

基本上,你有参考帧(称为I帧),你有修改帧(类P帧和B帧)......通常情况下,正确配置的解码器将能够加入流任何I帧(即,开始解码),但不在P帧和B帧上......所以,当用户拖动滑块时,您将需要找到最接近的I帧并解码... < / p>

这当然可以隐藏在Flash的引擎盖下,但这就是它将要做的......

答案 2 :(得分:1)

我不知道YouTube是如何做到这一点的,但如果您想要复制这些功能,请查看Annodex。它是一个基于Ogg Theora的开放标准,但带有额外的XML元数据流。

Annodex允许您链接到视频中的命名部分或temporal URIs到视频中的特定时间。使用libannodex,服务器可以搜索视频的相关部分并从那里开始提供服务。

答案 3 :(得分:1)

如果我猜测,它将是某种选择性数据检索,如HTTP中的Range标头。甚至可能是他们使用的东西。您可以找到有关它的更多信息here