linux FFMPEG 摄像头采集数据推流

环境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

猜你喜欢

转载自blog.csdn.net/wwy__/article/details/81298460