linux FFMPEG 摄像头采集数据推流

https://blog.csdn.net/wwy__/article/details/81298460?utm_source=blogxgwz1

环境vmware14    Ubuntu14

1)搭建推流服务器Nginx-rtmp(主要参考:https://www.cnblogs.com/cocoajin/p/4353767.html)

下载源码

        mkdir /home/ffmpeg

        cd /home/ffmpeg

        wget http://nginx.org/download/nginx-1.7.5.tar.gz

        wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

解压两个源码包

        cd nginx-1.7.5\

        ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master

        make

        make install      

        wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

        chmod +x /etc/init.d/nginx

        update-rc.d nginx defaults

推流:ffmpeg -re -i /home/ffmpe

配置 nginx-rtmp 服务器

打开 /usr/local/nginx/conf/nginx.conf

rtmp {

    server {

            listen 1935;

            chunk_size 4096;

            application live {

                    live on;

                    record off;

                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;

            }

            application live360p {

                    live on;

                    record off;

        }

    }

}

到这里服务器安装成功

2)安装ffmpeg

下载源码

        wget http://ffmpeg.org/releases/ffmpeg-3.4.4.tar.bz2

关于这个的安装教程很多暂且略过

 安装VLC media player

 在虚拟机准备一个MP4文件然后进行推流

推流命令:ffmpeg -re -i /home/ffmpeg/test1.mp4  -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/live/test1"

        后面尝试外接摄像头进行推流,发现ffmpeg一些功能还未编译进去,在虚拟机启用v4l2的时候报错误

重新配置编译

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-nonfree --enable-libx264 --enable-libxcb --enable-libv4l2

使能libx264 libv4l2等功能,

在执行上面这个配置命令可能会报not found x264 v4l2等错误

(具体可参考https://blog.csdn.net/fgf00/article/details/78203399?locationNum=5&fps=1)

apt-get install libx264-dev  

apt-get install libv4l-dev

即可解决

make

make install

到安装目录下执行推流命令

./ffmpeg -f video4linux2 -s  640x480 -i /dev/video0  -f flv rtmp://127.0.0.1:1935/live/live (通过拉流发现画面非常卡顿,应该是参数配置问题)

在执行的时候可能会报未找到某一个库

ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file:

为 Ffmpeg 加入环境变量

vi /etc/profile

加入以下内容:

export PATH="/usr/local/ffmpeg/bin:$PATH"

然后保存并运行source /etc/profile

我又陆续增加如下几个参数,感觉效果不大,后面再研究这些参数含义

  ./ffmpeg -f video4linux2 -r 12 -s  640x480 -i /dev/video0  -f flv rtmp://127.0.0.1:1935/live/live

 ./ffmpeg -f video4linux2  -r 12 -s 640x480 -i /dev/video0 -vcodec libx264 -f flv rtmp://127.0.0.1:1935/live/live

(ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video0 -f alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv rtmp://127.0.0.1/rtmpsvr/rtmp1)这个命令是在 http://www.cnblogs.com/lidabo/p/7099546.html  这个博客找到的,应该是可以实现的,可能缺少某些功能未编译进去

打开vlc(可以下载windows也可以在虚拟机下载vlc)

输入地址进行拉流,如果在windwos就使用虚拟机ip地址

拉流:rtmp://127.0.0.1:1935/live/test1

附上常用命令

ffmpeg常用命令

-f 强迫采用格式fmt

-i filename 输入文件

-s size 设置帧大小 默认是160x128

-r 设置帧频,默认25  (待验证,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)

-qscale:v n(q:v n) n表示视频质量级别1-31(待验证值越小,质量越好)

-ab bitrate设置音频码率

-ar freq 设置音频采样率

-ac channels设置通道,默认为1

-vd device 设置视频捕获设备 eg:/dev/video0

-av device 设置音频设备 eg:/dev/dsp

-vcodec

你可能感兴趣的:(linux FFMPEG 摄像头采集数据推流)