从FLV获取流(PHP,CURL)

时间:2014-11-02 23:49:47

标签: stream flv flowplayer

我尝试做这样的事情。我想将FLV或MP4文件流式传输到我网站上的播放器中(我使用的是流媒体播放器)。我通过CURL获取视频链接,并在流媒体“剪辑”中设置为该网址。但是,我有一个问题。当它没有加载时我无法快退。

如果我从主机外传输文件,可以从视频的一半开始吗?

1 个答案:

答案 0 :(得分:0)

取决于远程视频是否包含适当的元数据。

要从视频中间开始播放,播放器必须首先加载视频的开头,解析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请求从视频搜索器控件中的所需时间寻找最近的关键帧,而不是等待文件加载到所需的点。 / p>

有一些工具可以注入这些元数据,比如flvtool2,yamdi和我自己的flvmeta。 如果您可以修改远程文件,或者它们已经包含这些元数据,那么这将起作用。