ffmpeg中包含ffserver,可以配合ffmpeg实现最简单的视音频直播(实时采集的)。
实现直播的关键是
0.linux中视频/音频采集设备的正确驱动
1. ffmpeg的正确安装
2. ffserver的正确配置
3.采集模式的正确设置(参数选择)
4.正确播放模式
对于0,我在debian 7 上测试,作为服务器和采集计算机的都安装的debian7,其中服务器安装的64bit 版本 (ip 192.168.0.2),采集机安装的32bit 版本( ip地址192.168.0.3),在采集机上以oss驱动方式安装好了声卡驱动,另外采用一个杂牌USB免驱(windows下免驱)的摄像头,在debian 7上也正确识别了(摄像头分辨率 640×480,帧率30)
对于1,采用包安装方式,导人了deb-multimedia源安装了超过1.0的ffmpeg版本(默认的是0.6 左右的版本,太老了)。
对于2,是关键,我直接贴出测试的有效配置
/etc/ffserver.conf 文件有效内容
-
Port 8090
-
BindAddress 0.0.0.0
-
MaxHTTPConnections 2000
-
MaxClients 10
-
MaxBandwidth 10000
-
CustomLog -
-
NoDaemon
-
<Feed feed1.ffm> #配置服务器视频缓冲
-
File /tmp/feed1.ffm
-
FileMaxSize 5M
-
ACL allow 127.0.0.1
-
ACL allow 192.168.0.1 192.168.0.255 #允许访问服务的地址范围,前面一个写最小的,后面一个写最大的
-
</Feed>
-
<Stream test.webm> # 配置输出的视频流(用作点播)
-
Format webm
-
Feed feed1.ffm # 配置从那个视频缓冲中获取数据源
-
AudioCodec vorbis
-
AudioBitRate 64 # 音频码率
-
VideoCodec libvpx
-
VideoSize 640X480 # 视频分辨率
-
VideoFrameRate 30 # 视频帧率
-
AVOptionVideo flags +global_header # Parameters passed to encoder
-
AVOptionVideo cpu-used 0
-
AVOptionVideo qmin 10
-
AVOptionVideo qmax 42
-
AVOptionVideo quality good
-
AVOptionAudio flags +global_header
-
PreRoll 15
-
StartSendOnKey
-
VideoBitRate 4000 # 视频码率
-
</Stream>
-
<Stream stat.html>
-
Format status
-
ACL allow localhost
-
ACL allow 192.168.0.0 192.168.255.255
-
</Stream>
-
<Redirect index.html>
-
URL http://www.ffmpeg.org/
-
</Redirect>
然后运行
-
ffserver -f /etc/ffserver.conf
3. 采集命令
-
ffmepg -f oss -i /dev/dsp -ac 1 -f video4linux2 -i /dev/video0 http://192.168.0.2:8090/feed1.ffm
解释:
-
-f oss -i /dev/dsp -ac 1 #表示采集oss模式声卡的输入设备/dev/dsp中通道1的声音
-
-f video4linux2 -i /dev/video0 #表示采集视频输入设备/dev/video0的视频
-
#是输出位置,要和前面ffserver的配置匹配才能直播
4.在线播放,因为这里采用了webm的编码,所以可以在谷歌浏览器或者firefox浏览器中直接输入来观看,也可以利用支持在线播放的诸如vlc播放器来播放。
当然这个仅仅是功能的测试,不能用作实际的服务。
阅读(3061) | 评论(0) | 转发(0) |