ffmpeg+ffserver实现摄像头直播
1. 首先, 下载ffmpeg的源码, 编译
先./configure --disable yasm --prefix=/usr/local/ffmpeg
然后make 跟make install
2. 修改环境变量
修改/etc/profile文件, 在最后加入
export PATH="/usr/local/ffmpeg/bin:$PATH"
3. 做一个conf文件, 启动ffserver
Port 8090 #绑定端口号 BindAddress 0.0.0.0 #绑定ip MaxHTTPConnections 2000 #最大HTTP连接数 MaxClients 1000 #最大客户端连接数 MaxBandwidth 1000 #最大带宽 CustomLog - #日志文件,“-”为直接打印 NoDaemon #默认全局参数 <Feed feed1.ffm> #Feed:每一个输入(摄像头)建立一个Feed File /tmp/feed1.ffm #Feed缓存文件 FileMaxSize 20M #缓存文件最大值 ACL allow 127.0.0.1 #允许写入Feed的ip </Feed> <Stream test.flv> #Stream:每一个广播(转换后的视频流)的转码设置项目 Format flv #视频流格式 Feed feed1.ffm #视频流的种子来源 VideoFrameRate 40 #视频帧频 VideoBitRate 128 #视频比特率 VideoSize 160x80 #视频帧大小 AVOptionVideo flags +global_header NoAudio </Stream>
注意, 这里是NoAudio, 就是没有音频的, 因为是摄像头, 没有带音频.
4. 插入摄像头, 并把它连到虚拟机里面, 用dmesg命令可以看到:
......
Linux video capture interface: v2.00
uvcvideo: Found UVC 1.00 device USB2.0 Camera (1e4e:0110)
input: USB2.0 Camera as /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/input/input5
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v1.0.0)
5. 使用ffmpeg命令, 给ffserver喂一个流:
ffmpeg -f v4l2 -i /dev/video0 http://127.0.0.1:8090/feed1.ffm
6. 最后用vlc或者media player就可以播放http://虚拟机ip:8090/test.flv了.
对了, 记得关iptables.
现在的问题是延时非常大.
考虑下一步用rtsp协议.