我想从我创建的播放列表中播放现场视频,但实际的视频文件(.flv)存储在某些我无法管理的外部文件托管中,但它目前允许使用 Flash 播放器播放其内容(逐步)。
哪种解决方案最好?我可以使用当前的 Web 服务器(Debian w/Apache)还是应该使用某些特定的服务器软件?我读过一些名称,例如 Red5 和 Wowza,但我不知道这些是否能解决我的实际问题,或者我应该如何使用它们。此外,这个项目的成本应该尽可能低。
答案1
例如,你可以将 CDN 与 RTMP 和 RTMPT Flash Streaming 结合使用亚马逊 CloudFront, 简单CDN, ETC。
答案2
使用 flvstreamer 和ff服务器。
flvstreamer 的作用正如其名称所示,而 ffserver 则由 ffmpeg 提供,它能让你从任何可以输入到 ffmpeg 的内容中流式传输实时视频,就像这样:
flvstreamer url | ffmpeg -i - http://127.0.0.1:8090/feed1.ffm
ffserver 可以“输出”一个 flash 流,你可以像这样访问http://site/video.swf或者您可以提供其他格式(如 asf 或 mpg),如果您的计算机速度足够快,ffmpeg 可以实时对其进行转码。
然后,您的“播放列表”本质上就是一个flvserver|ffmpeg...
命令列表,并且可以很容易地添加更多命令或添加更多流。
下面是我使用的配置文件。需要注意的几点:feed1.ffm 是一个“缓冲区”,而“最大大小”本质上是滞后程度。删除FileMaxSize
所有记录,这样您就可以对视频进行时移。
Port 8090
BindAddress 0.0.0.0
MaxClients 200
MaxBandwidth 4000000
<Feed feed1.ffm>
File tmp/feed1.ffm
FileMaxSize 10M
ACL allow 127.0.0.1
</Feed>
<Stream video.swf>
Feed feed1.ffm
VideoBitRate 500
VideoBufferSize 40
VideoGopSize 10
Format swf
VideoSize 640x480
VideoFrameRate 10
VideoQMin 1
VideoQMax 4
VideoHighQuality
NoAudio
PreRoll 0
StartSendOnKey
</Stream>