最近项目中有这样一个需求:需要从相机中读取视频流,然后利用Qt显示实时视频流。
最终使用的是这样的结构:ffmpeg从USB免驱相机中获取视频流,然后推流到nginx服务器上。最后Qt使用WebView拉取Url中的视频流。
这次和大家介绍下linux下安装ffmpeg。
ffmpeg怎么读——大家和我一起读:“ef ef em peg”
ffmpeg是一个很强大的音视频处理工具,官网是:http://ffmpeg.org/ 官网介绍ffmpeg是:一个完整的、跨平台的解决方案,可以记录、转换和传输音频和视频。
1.下载源码安装包,我习惯直接右键解压
2.安装
①直接./configure出错
错误的意思是 yasm/nasm 包不存在或者很旧,解决方法是安装yasm.
下载后解压
./configure
make
sudo make install
编译参数都是默认的,直接安装到系统中即可,安装成功之后继续回到ffmpeg解压后的目录,执行下面命令编译并安装:
②安装ffmpeg
./configure --enable-shared --prefix=/tmp/ffmpeg
make
sudo make install
编译过程有点长,耐心等待。
完成之后执行 cd /tmp/ffmpeg/ 进入安装目录,查看一下发现有bin,include,lib,share这4个目录,其中bin是ffmpeg主程序二进制目录,include是C/C 头文件目录,lib是编译好的库文件目录,share是文档目录.
之后将ffmpeg目录复制到/usr/local/dev_workspace(自建)下,然后进入bin目录,执行 ./ffmpeg -version 查看当前版本的详细信息,默认情况下一般会报libavdevice.so.58: cannot open shared object file: No such file or directory,原因是lib目录未加载到链接到系统库中。解决方法是在/etc/ld.so.conf中添加一个ffmpeg.conf文件,文件内容如下。然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了
查看结果如图:
之前安装时目录写错了,所以是图中的效果。
安装ffmpeg仅是其中第一步,而且安装时还有很多参数没有设置,下次会结合USB摄像头作具体的应用。
本文主要参考https://www.cnblogs.com/freeweb/p/6897907.html ,并添加一些自己的实际安装时的截图,方便以后再次使用。