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协议.

原文地址:https://www.cnblogs.com/Montauk/p/6292709.html