在哪里可以找到有关 WebM 实时 http 流媒体的信息?

发布于 2024-11-19 13:42:58 字数 207 浏览 1 评论 0原文

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

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

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

I am doing some research on the video playback features provided by HTML5. I just found that recent versions of Google Chrome and Firefox support playback of WebM encoded live video streams via HTTP with the tag.

I could not find information anywhere on how this is actually implemented. There are plenty of links to be found on the Apple HTTP Live Streaming protocol, but not much on WebM streaming.

Any useful link would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不必在意 2024-11-26 13:42:58

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

WowzaFlumotion 是一些示例。

您可以在此处阅读相关讨论

Basically you need a server that can stream WebM for you.

Wowza and Flumotion are some examples.

You can read a discussion about it here

注定孤独终老 2024-11-26 13:42:58

以下是我在 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 处的服务器配置的,以便服务器通过 client_high_ip 到 client_low_ip,同时处理 server_ip 上的 mpeg 到 webm 会话(下文继续)。

此 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://:8090/0.webm 并检查 http://:8090/ 的状态

希望这会有所帮助。

Here is how I did it in Ubuntu:

First, build ffmpeg from source to include the libvpx drivers (even if your using a version that has it, you need the newest ones (as of this month) to stream webm because they just did add the functionality to include global headers). I did this on an Ubuntu server and desktop, and this guide showed me how - instructions for other OSes can be found here.

Once you've gotten the appropriate version of ffmpeg/ffserver you can set them up for streaming, in my case this was done as follows.

On the video capture device:

ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
  • The "-f video4linux2 -standard ntsc -i /dev/video0" portion of that may change depending on your input source (mine is for a video capture card).

Relevant ffserver.conf excerpt:

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>
  • Note this is configured for a server at feeder_ip to execute the aforementioned ffmpeg command, and for the server at server_ip so server to client_low_ip through client_high_ip while handling the mpeg to webm conversation on server_ip (continued below).

This ffmpeg command is executed on the machine previously referred to as server_ip (it handles the actual mpeg --> webm conversion and feeds it back into the ffserver on a different feed):

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

Once these have all been started up (first the ffserver, then the feeder_ip ffmpeg process then then the server_ip ffmpeg process) you should be able to access the live stream at http://<server_ip>:8090/0.webm and check the status at http://<server_ip>:8090/

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文