ffmpeg+ffserver实现摄像头直播

Posted Montauk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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协议.

以上是关于ffmpeg+ffserver实现摄像头直播的主要内容,如果未能解决你的问题,请参考以下文章

HTTP Live Streaming、FFMPEG & FFSERVER 和 iPhone OS 3

来自 Android 的视频流

物联网架构成长之路(41)-直播流媒体入门(RTSP篇)

写代码实现直播推流

流媒体服务海康摄像头RTSP视频推流转码拉流直播综合应用:VLC+FFMPEG+Nginx实现RTSP到RTMP网页直播

ffmpeg+jsmpeg+nginx实现多道h5视频直播