4

我正在研究 HTML5 提供的视频播放功能。我刚刚发现 Google Chrome 和 Firefox 的最新版本支持通过带有标签的 HTTP 播放 WebM 编码的实时视频流。

我无法在任何地方找到有关如何实际实施的信息。在 Apple HTTP Live Streaming 协议上可以找到很多链接,但在 WebM 流媒体上却不多。

任何有用的链接将不胜感激。

4

2 回答 2

1

基本上,您需要一台可以为您流式传输 WebM 的服务器。

WowzaFlumotion就是一些例子。

您可以在此处阅读有关它的讨论

于 2011-07-11T11:22:15.723 回答
1

这是我在 Ubuntu 中的做法:

首先,从源代码构建 ffmpeg 以包含 libvpx 驱动程序(即使您使用具有它的版本,您也需要最新的版本(截至本月)来流式传输 webm,因为它们只是添加了包含全局标头的功能)。我在 Ubuntu 服务器和桌面上执行此操作,本指南向我展示了如何在此处找到其他操作系统的说明。

一旦你获得了适当版本的 ffmpeg/ffserver,你就可以将它们设置为流式传输,在我的例子中,这是按如下方式完成的。

在视频捕获设备上:

ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
  • 其中的“-f video4linux2 -standard ntsc -i /dev/video0”部分可能会根据您的输入源而改变(我的是用于视频采集卡)。

相关 ffserver.conf 摘录:

Port 8090
#BindAddress <server_ip>
MaxHTTPConnections 2000
MAXClients 100
MaxBandwidth 1000000
CustomLog /var/log/ffserver
NoDaemon

<Feed 0.ffm>
File /tmp/0.ffm
FileMaxSize 5M
ACL allow <feeder_ip>
</Feed>
<Feed 0_webm.ffm>
File /tmp/0_webm.ffm
FileMaxSize 5M
ACL allow localhost
</Feed>

<Stream 0.mpg>
Feed 0.ffm
Format mpeg1video
NoAudio
VideoFrameRate 25
VideoBitRate 256
VideoSize cif
VideoBufferSize 40
VideoGopSize 12
</Stream>
<Stream 0.webm>
Feed 0_webm.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 320x240
VideoFrameRate 24
AVOptionVideo flags +global_header
AVOptionVideo cpu-used 0
AVOptionVideo qmin 1
AVOptionVideo qmax 31
AVOptionVideo quality good
PreRoll 0
StartSendOnKey
VideoBitRate 500K
</Stream>

<Stream index.html>
Format status
ACL allow <client_low_ip> <client_high_ip>
</Stream>
  • 请注意,这是为 feeder_ip 上的服务器配置的,以执行上述 ffmpeg 命令,并为 server_ip 上的服务器配置,因此在 server_ip 上处理 mpeg 到 webm 对话时,通过 client_high_ip 服务器到 client_low_ip(下文继续)。

此 ffmpeg 命令在以前称为 server_ip 的机器上执行(它处理实际的 mpeg --> webm 转换并将其反馈到不同提要上的 ffserver):

ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm

一旦这些都启动了(首先是 ffserver,然后是 feeder_ip ffmpeg 进程,然后是 server_ip ffmpeg 进程),您应该能够访问实时流http://<server_ip>:8090/0.webm并检查状态http://<server_ip>:8090/

希望这可以帮助。

于 2013-03-16T15:01:07.967 回答