播放一个视频文件的流程如下所示:
封装格式数据 FLV MKV MP4
解封装格式
AAC.MP3.. 音频压缩数据 视频压缩数据 H.264,MPeg2..
音频解码 视频解码
PCM 音频采样数据 视频像素数据 YUV
视音频同步
声音 图像
ffmpeg的下载地址 https://ffmpeg.zeranoe.com/builds/
SDL2下载地址:http://www.libsdl.org/download-2.0.php
ffmpeg 下载Shared Dev 取shared里的BIN Dev里的lib和include
SDL2 下载 Visual C++ 32/64-bit 取Include和Lib
pro里的配置
INCLUDEPATH += $$PWD/ffmpeg/include \
$$PWD/SDL/include\
LIBS += $$PWD/ffmpeg/lib/avcodec.lib\
$$PWD/ffmpeg/lib/avdevice.lib\
$$PWD/ffmpeg/lib/avfilter.lib\
$$PWD/ffmpeg/lib/avformat.lib\
$$PWD/ffmpeg/lib/avutil.lib\
$$PWD/ffmpeg/lib/postproc.lib\
$$PWD/ffmpeg/lib/swresample.lib\
$$PWD/ffmpeg/lib/swscale.lib\
$$PWD/SDL/lib/x86/SDL2.lib
3.添加头文件
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavutil/time.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
#include "libavutil/imgutils.h"
#include <libswresample/swresample.h>
#include <SDL.h>
#include <SDL_audio.h>
#include <SDL_types.h>
#include <SDL_name.h>
#include <SDL_main.h>
#include <SDL_config.h>
}
4.ffmpeg测试
qDebug()<<QString(avcodec_configuration());
qDebug()<<"version:"<<QString::number(avcodec_version());
5.测试结果
"--disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt"
version: "3815012"
6.错误修改
#undef main
int main(int argc, char *argv[])