Ubuntu16.04搭建FFmpeg开发环境以及代码验证

参考链接
01_FFMpeg环境搭建
02_FFMpeg代码验证

01的文章讲述了环境搭建,在代码验证时发现略有问题,后面我说。
02的文章讲述了搭建FFMpeg环境和验证代码。环境搭建和01文章类似,主要是参考代码具有意义。

我说下主要内容吧。

Step 1 建立目录

在希望存放项目的目录下创建三个文件夹,分别是:

ffmpeg_sources用于下载源文件
ffmpeg_build 存储编译后的库文件
bin存储编码解析库等(ffmpeg,ffplay,ffprobe,X264,X265等)
我这里目录是/home/shengy/下新建了这三个文件夹
Ubuntu16.04搭建FFmpeg开发环境以及代码验证_第1张图片

Step 2 安装依赖库

在这之前若库不是最新的,通过sudo apt-get update更新一下软件列表。

在终端粘贴下列代码,安装需要的依赖库:

sudo apt-get update

sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
pkg-config \
texinfo \
wget \
zlib1g-dev

Step3 FFMpeg依赖库安装

本指南假定您要安装一些最常见的第三方库。每个小节为您提供安装该库所需的命令。
如果不需要某些功能,则可以跳过相关小节(如果不需要),然后在FFmpeg中删除相应的./configure选项。例如,如果不需要libvpx,请跳过该小节,然后从“ 安装FFmpeg”部分中删除–enable-libvpx。
提示:如果要在多核系统中加快编译速度,可以在每个make命令(例如make -j4)中使用-j选项。
建议都使用源码进行安装。

我这里省略每个库的简介,直接给出总结后的命令。详细内容可看01文章

sudo  apt  install   nasm yasm  libx264-dev libx265-dev libnuma-dev libvpx-dev libfdk-aac-dev libmp3lame-dev  libopus-dev   -y

Step4 FFMpeg编译与安装

下面的命令是我从文章01复制过来的,但是我增加了–enable-postproc这个编译选项,因为后面的测试代码用到了filter库的内容,filter库需要编译postproc才能使用。 我第一次使用就是报了找不到postproc这个链接库。

cd ~/ffmpeg_sources 
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 
tar xjvf ffmpeg-4.2.1.tar.bz2 
cd ffmpeg-4.2.1 
PATH="$HOME/bin:$PATH" 
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" 
CFLAGS="-O3 -fPIC"

 ./configure \
 --prefix="$HOME/ffmpeg_build" \
 --pkg-config-flags="--static" \
 --extra-cflags="-I$HOME/ffmpeg_build/include" \
 --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
 --extra-libs="-lpthread -lm" \
 --bindir="$HOME/bin" \
 --enable-gpl \
 --enable-libass \
 --enable-libfdk-aac \
 --enable-libfreetype \
 --enable-libmp3lame \
 --enable-libopus \
 --enable-libvorbis \
 --enable-libvpx \
 --enable-libx264 \
 --enable-libx265 \
 --enable-pic \
 --enable-shared   \
 --enable-postproc \
 --enable-nonfree
 
PATH="$HOME/bin:$PATH" 
make -j16 
make install 
hash -r

关闭当前窗口,然后重新打开,使用ffmpeg -version测试,如果打印正常,则安装完成。

添加ffmpeg库的链接:

为了代码开发正常,还需要把库文件的路径添加到系统。
在/etc/ld.so.conf中 末尾添加**/home/shengy/ffmpeg_build/lib**即可,这个路径是刚才编译的ffmpeg_build的路径,根据自己情况填
在这里插入图片描述
然后执行

sudo ldconfig  

Step5 FFMpeg测试代码

更多代码参考02文章。我这里只复制了第一个。
新建test_001.c,输入如下内容。

#include 
#include 
#include 
#include 
 
#define dbmsgc(fmt, args ...) printf("cong:%s[%d]: "fmt"\n", __FUNCTION__, __LINE__,##args)
//#define dbmsg(fmt, args ...) printf("cong:%s:%s[%d]: "fmt"\n",__FILE__, __FUNCTION__, __LINE__,##args)
int main(int argc, char **argv)
{
    int i=0;
    AVFormatContext *pFormatCtx = NULL;
    avcodec_register_all();
#if CONFIG_AVDEVICE
    avdevice_register_all();
#endif

   avfilter_register_all();

    av_register_all();
 
    if(avformat_open_input(&pFormatCtx, argv[1], NULL, NULL)!=0)
        return -1; // Couldn't open file
 
    if(avformat_find_stream_info(pFormatCtx, NULL)<0)
        return -1; // Couldn't find stream inform
    av_dump_format(pFormatCtx,0, 0, 0);
 
    return 0;
}

对应的Makefile如下:

FFMPEG=/home/shengy/ffmpeg_build/

CC=gcc
CFLAGS=-g -I$(FFMPEG)/include
LDFLAGS = -L$(FFMPEG)/lib/ -lswscale -lswresample -lavformat -lavdevice -lavcodec -lavutil -lavfilter -lm
TARGETS=test_001

all:$(TARGETS)
test_001:test_001.c
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -std=c99 #我测试了-std=c99和-std=c++11 都可以运行
 
clean:
	rm -rf $(TARGETS)

编译完成后,我的测试结果如下:
Ubuntu16.04搭建FFmpeg开发环境以及代码验证_第2张图片

你可能感兴趣的:(视频编解码,ffmpeg)