2011-09-21 74 views
3

我想从我的摄像头连接到我的无头Ubuntu服务器(运行Maverick 10.10)流视频和音频。我希望能够以WebM格式(VP8视频+ OGG)进行流式传输。带宽有限,所以流必须低于1Mbps。命令行流媒体摄像头与WebM格式的Ubuntu服务器音频

我试过使用FFmpeg。我能够记录来自摄像头的WebM视频下列要求:

ffmpeg -s 640x360 \ 
-f video4linux2 -i /dev/video0 -isync -vcodec libvpx -vb 768000 -r 10 -vsync 1 \ 
-f alsa -ac 1 -i hw:1,0 -acodec libvorbis -ab 32000 -ar 11025 \ 
-f webm /var/www/telemed/test.webm 

然而,尽管与垂直同步和异步选择各种方式进行实验,我可以不同步的音频,或尼山风格的快进视频与匹配的快速音频。我也一直无法得到这与ffserver实际工作(通过替换test.webm路径和文件名与相关的饲料文件名)。

目标是在紧凑的带宽中使用只有开源组件才能获得可在现代浏览器中查看的实时音频+视频馈送。 (没有MP3格式的合法谷壳)

因此我的问题是: 你会如何从网络摄像头通过Linux与同步音频流webm?你使用什么软件?

您是否成功通过FFmpeg通过网络摄像头编码webm中的同步音频?如果是这样,你发出了什么命令?

FFmpeg + FFserver是否值得坚持,还是还有其他更适合的命令行工具(例如VLC,它似乎不太适合编码)?

是否像Gstreamer + flumotion可从命令行配置?如果是这样,我在哪里可以找到命令行文档,因为flumotion doc在命令行细节上相当轻松?

在此先感谢!

回答

0

你应该考虑尝试一下flumotion。您可以使用flumotion-admin轻松设置从网络摄像头捕获的webm管道,并让它在后台运行。

0

我最近设置了它,但它有点痛苦。这是我必须做的:

首先,从源代码构建ffmpeg以包含libvpx驱动程序(即使您使用的是带有它的版本,您需要最新的版本(截至本月)来流式传输webm,因为它们只是确实添加了包含全局标题的功能)。我在Ubuntu服务器和桌面上执行了此操作,并且this guide向我显示了操作方法 - 其他操作系统can be found here的操作说明。

一旦你已经得到适当版本的ffmpeg/ffserver,你可以将它们设置为流式传输,在我的情况下,这是按如下方式完成的。

在视频捕获装置:

ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm 
  • 的是, “-f video4linux2 - 标准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同时处理的MPEG到WEBM会话上SERVER_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://:8090/0.webm上的实时流并检查http中的状态://:8090/

希望这会有所帮助。