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