0
我尝试做这样的事情。我想将FLV或MP4文件传输到网站上的播放器(我使用流式播放器)。我通过CURL链接到视频,并将流媒体“剪辑”设置为该网址。但是,我有一个问题。没有加载时,我无法倒带转发。从FLV获取流(PHP,CURL)
如果我从我的主机外面流式传输文件,是否可以从一半视频开始?
我尝试做这样的事情。我想将FLV或MP4文件传输到网站上的播放器(我使用流式播放器)。我通过CURL链接到视频,并将流媒体“剪辑”设置为该网址。但是,我有一个问题。没有加载时,我无法倒带转发。从FLV获取流(PHP,CURL)
如果我从我的主机外面流式传输文件,是否可以从一半视频开始?
这取决于远程视频是否包含适当的元数据。
要从视频中间开始播放,播放器必须首先加载视频的开头,解析onMetadata
事件,并解析包含关键帧时间到字节位置映射的数组。
当flvmeta工具倾倒,元数据可能看起来像这样:
{
'hasMetadata' => true
'hasVideo' => true
'hasAudio' => true
'duration' => 76.826
'lasttimestamp' => 76.8
'lastkeyframetimestamp' => 74.449
'width' => 608
'height' => 336
'videodatarate' => 472.876919109
'framerate' => 23.3124202744
'audiodatarate' => 31.25
'audiosamplerate' => 22000
'audiosamplesize' => 16
'stereo' => false
'filesize' => 5036611
'videosize' => 4671635
'audiosize' => 342596
'datasize' => 5017666
'metadatacreator' => 'flvmeta 1.1-dev'
'metadatadate' => Wed, 23 Dec 2009 17:37:20 Paris, Madrid
'audiocodecid' => 2
'videocodecid' => 2
'audiodelay' => 0
'canSeekToEnd' => false
'hasCuePoints' => false
'cuePoints' => [
]
'hasKeyframes' => true
'keyframes' => {
'times': [
0
0.5
0.709
1.21
1.71
2.211
2.711
3.212
3.712
]
'filepositions': [
3534
30982
47899
71050
96847
123067
161269
194445
225145
]
}
}
这可以让玩家了解该文件的总时长,并从想要的时间寻找到最近的关键帧视频搜索器控件使用部分HTTP请求,而不是等待文件加载到所需点。
有一些工具可以注入这些元数据,比如flvtool2,yamdi和我自己的flvmeta。 如果您可以修改远程文件,或者它们已经包含这些元数据,这将起作用。