实时视频IMU采集项目(1): 在Qt中使用FFmpeg库
优采云 发布时间: 2020-08-07 08:15概述
要实现项目中视频流的实时传输和显示,最常见的是编码和解码操作. 如果您自己实现H.264的编码和解码,则将花费大量时间和精力. 因此,通常使用开源H.264编*敏*感*词*. 所谓的编*敏*感*词*是用于实现编码和解码,输入原创数据流以及输出H.264编码流的代码.
在Ubuntu16.04下安装FFmpeg
首先在官方网站上下载最新的FFmpeg压缩包源代码,然后使用以下命令解压缩:
$ tar xvf ffmpeg-3.4.2.tar.bz2
然后进入解压缩的文件夹以查看安装步骤:
$ cd ffmpeg-3.4.2
$ cat INSTALL.md
显示内容如下:
安装FFmpeg: 输入./configure创建配置. 配置列表
通过运行configure --help打印
选项.
可以从与FFmpeg源不同的目录中启动
configure,以在树外构建对象. 为此,请在启动配置时使用绝对路径,例如/ ffmpegdir / ffmpeg / configure. 然后键入make来构建FFmpeg. 需要GNU Make 3.81或更高版本. 键入make install以安装您构建的所有二进制文件和库.
注意
默认情况下,非系统依赖项(例如libx264,libvpx)处于禁用状态.
请按照上述步骤进行安装:
$ ./configure --prefix=/home/string/ffmpeg3.4.2 --enable-shared --disable-static
提醒: 找不到Yasm / nasm或太旧. 使用–disable-yasm进行严重破坏的构建.
发现未安装yasm,因此请安装yasm:
$ sudo apt-get install yasm
安装后,重新执行上述第一步以生成配置文件
$ make
$ make install
# 安装后,查看ffmpeg版本
cd ~/ffmpeg3.4.2/bin
./ffmpeg -version
安装成功.
Qt导入FFmpeg库
首先创建一个新的Qt项目,默认情况下每个人都会知道这一点. 下一步是根据先前的安装目录配置Qt pro文件. 如下图所示:
核心是添加FFmpeg库目录和库文件路径信息.
INCLUDEPATH += /home/string/ffmpeg3.4.2/include
LIBS += -L /home/string/ffmpeg3.4.2/lib -lavcodec -lswresample -lavutil -lavformat -lswscale
下一步是修改main.cpp文件,以测试FFmpeg文件是否成功导入.
<p># main.cpp
#include "mainwidget.h"
#include
#include
using namespace std;
// 由于建立的是C++工程,编译时使用的是C++编译器编译,
// 而FFmpeg是C的库,因此这里需要加上extern "C",否则会提示各种未定义
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavfilter/avfilter.h"
#include "libswresample/swresample.h"
#include "libavdevice/avdevice.h"
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;
w.show();
cout