天天看点

Ubuntu 下配置 Qt 的 FFmpeg 的开发环境

FFmpeg 的 configure 脚本

./configure --prefix="$FFMPEG_PATH/build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$FFMPEG_PATH/build/include" \
--extra-ldflags="-L$FFMPEG_PATH/build/lib" \
--bindir="$FFMPEG_PATH/build/bin" \
--enable-gpl \
--enable-neon \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree      

 具体的编译过成可以参看这两篇文章

https://blog.csdn.net/heng615975867/article/details/79388439

https://www.cnblogs.com/candycaicai/p/4689459.html

ps: --enable-neon 可以开启 neon 加速

pro 文件

网上的配置有许多坑,遇到了很多莫名的 undefined reference ... ,所以把自己详细完整的配置发出来,以便其他有类似问题的小伙伴能够少走弯路(ps: 我是编译的支持 aac/x264/x265 的 FFmpeg 静态库)  

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
 
INCLUDEPATH +=  /usr/local/include \
                /home/lingyun/CodeEnvironments/FFmpeg-master  \
                /home/lingyun/CodeEnvironments/FFmpeg-master/build/include
 
LIBS +=     -L/usr/local/lib/ \
                    -L/home/lingyun/CodeEnvironments/FFmpeg-master/build/lib/ \
                    -lavformat \
                    -lavcodec \
                    -lswscale \
                    -lavutil \
                    -lavfilter \
                    -lpostproc \
                    -lswresample \
                    -lavdevice \
 
LIBS += -L/usr/lib/x86_64-linux-gnu/ -lva -lva-x11 -lva-drm -lxcb -lxcb-shm\
        -lxcb -lX11 -lasound -lSDL -lpthread -ltheoraenc -ltheoradec \
        -logg -lmp3lame -lfdk-aac -lx264 -lx265 -lvpx \
        -lm -lbz2 -lz -lrt -lvorbis -lvorbisenc -lass -llzma \
        -lrt  -lvdpau
 
SOURCES += \
        main.cpp      

c++ 文件

#include <iostream>
using namespace std;
 
//需要加上 extern "C"
 
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
}
 
int main()
{
    cout << "Hello Qt FFmpeg!" << endl;
 
    av_register_all();
 
    //输出版本号
    unsigned version = avcodec_version();
    cout << "version is:" << version << endl;
    return 0;
}      

执行的结果 

Ubuntu 下配置 Qt 的 FFmpeg 的开发环境