FFMPEG之Linux下编译

注:转自别人的,来源不知。

1. 安装linux的基础环境

基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句如下:

# apt-get -y install autoconf automake build-essential libtool libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

2. 安装依赖库

依赖库分两方面,参考以下网站列出的依赖库信息,本文选择的版本均参考于此网页: FFmpeg依赖库信息

2.1 FFmpeg推荐的依赖开发库(不需要独立安装)
# apt-get -y install libass-dev libfreetype6-dev libmp3lame-dev libtheora-dev libvorbis-dev libopus-dev libx264-dev yasm
2.2 FFmpeg 桌面应用推荐的依赖开发库(不需要独立安装)
# apt-get -y install libva-dev libvdpau-dev libsdl2-dev
2.3 需要独立安装的依赖开发库

首先创建 FFmpeg 代码目录,所有的源代码放在这个目录下

# mkdir ~/ffmpeg_sources
2.3.1 安装 fdk-aac-0.1.5:
# cd ~/ffmpeg_sources
# wget http://downloads.sourceforge.net/opencore-amr/fdk-aac-0.1.5.tar.gz
# tar -zxvf fdk-aac-0.1.5.tar.gz && mv fdk-aac-0.1.5 fdk-aac
# cd fdk-aac
# ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
# make
# make install
# make distclean
2.3.2 安装 libvpx-1.6.1:
# cd ~/ffmpeg_sources
# wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.1.tar.bz2
# tar -jxvf libvpx-1.6.1.tar.bz2 && mv libvpx-1.6.1 libvpx
# cd libvpx
# PATH="$HOME/bin:$PATH"
# ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests
# PATH="$HOME/bin:$PATH"
# make 
# make install
# make distclean
2.3.3 安装 x265-2.4:
# cd ~/ffmpeg_sources
# sudo apt-get install cmake mercurial
# wget https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
# tar -zxvf x265_2.4.tar.gz && mv x265_2.4 x265
# cd x265/build/linux
# PATH="$HOME/bin:$PATH"
# cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
# make 
# make install
# make clean
2.3.4 安装 x264:
# cd ~/ffmpeg_sources
# wget  https://download.videolan.org/x264/snapshots/x264-snapshot-20170822-2245-stable.tar.bz2
# tar -jxvf x264-snapshot-20170822-2245-stable.tar.bz2 && mv x264-snapshot-20170822-2245-stable x264
# ./configure --prefix="$HOME/ffmpeg_build" --enable-shared --enable-pic
# make
# make install
# make distclean

3. 编译FFmpeg

# cd ~/ffmpeg_sources
# wget http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.xz
# tar -Jxvf ffmpeg-3.3.3.tar.xz && mv ffmpeg-3.3.3 ffmpeg
# cd ffmpeg
# PATH="$HOME/bin:$PATH"
# export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
# ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
# PATH="$HOME/bin:$PATH"
# make
# make install
# make distclean
# hash -r

FFmpeg 编译之后,即可使用。编译生成的可执行程序在 ~/bin 目录下

注:上面的 ./configure 配置编译后并不能进行调试,需要如下配置:

# PATH="$HOME/bin:$PATH"
# export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-debug --disable-asm --disable-stripping

4. 安装JDK

虽然全程用 C++ 编译,但是安装 Eclipse 需要 JDK 环境,因此先安装 JDK。

4.1 首先查看系统位数:
getconf LONG_BIT
4.2 下载解压jdk包

我的系统是32位系统,从jdk官网上下载32位的jdk包http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html),这里下载的是 jdk-8u144-linux-i586.tar.gz,解压:

# mkdir ~/Java
# tar -zxvf jdk-8u144-linux-i586.tar.gz -C ~/Java/
4.3 设置环境变量
# sudo vim /etc/profile

在结尾写入代码(xxx为用户名,即为登录账户)

export JAVA_HOME=/home/rong/Java/jdk1.8.0_152
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

使环境变量生效

source /etc/profile
4.4 查看系统中已有的JDK版本
# sudo update-alternatives --config java
# sudo update-alternatives --config javac
# sudo update-alternatives --config javaws
4.5 设置系统默认JDK
# sudo update-alternatives --install /usr/bin/java java /home/rong/Java/jdk1.8.0_144/bin/java 2000
# sudo update-alternatives --install /usr/bin/javac javac /home/rong/Java/jdk1.8.0_144/bin/javac 2000
# sudo update-alternatives --install /usr/bin/javaws javaws /root/Java/jdk1.8.0_144/bin/javaws 2000
4.6 查看Java版本,如果查看到与安装的一致,则说明安装成功
# java -version

5. 安装 Eclipse

5.1 下载 Eclipse

从官网上下载 Exlipse,这里选择下载 linux 的 C/C++ 开发版:eclipse下载地址

5.2 解压
# tar -zxvf eclipse-cpp-neon-3-linux-gtk-x86_64.tar.gz && mv eclipse ~/
5.3 使用Eclipse

Eclipse 解压之后可以直接使用

# cd ~/eclipse
# ./eclipse
5.3 配置Eclipse
  • 在Eclipse菜单中选择 help -> install new software
  • 点击“Add…”按钮,加了下面的软件源地址
    http://download.eclipse.org/tools/cdt/releases/9.2,并命名为CDT。这里要注意一下你的Eclipse版本,你可以点击
    Help -> About Eclipse SDK查看得知,并在下面网站上找到相应的网址: http://www.eclipse.org/cdt/downloads.php
  • 选好后确定,即可看到要求我们选择要安装的软件。其实安装CDT Main Features 和 CDT Optional Features中的GCC就可以了,一些选项还依赖于其它可能没有安装好的库,
    装了也不会起作用。不过在这里浪费时间没必要,都选了就得了~
  • 然后选择“Next -> Next -> Finsh”就开始安装了,安装结束后,会弹出如下要求重启Eclipse提示框。点击Yes重启Eclipse,这样就安装成功了。重启之后可以新建C++ Project了。

另外需要注意的是我们在编译 C++ 的时候要注意配置编译器的路径和 C++ 运行库的路径,具体方法是打开 windows->preference->C/C++->Environment:

C_INCLUDE_PATH=/usr/include
C_PLUS_INCLUDE_PATH=/usr/include/c++/4.8.4

其中,/usr/include/c++/4.6.3为C++编译器的所在路径。

6. 建立 FFmpeg 工程

选择New-> Makefile project from existing code,在弹出对话框中,选择代码目录,设定工程名,选择Liuux GCC作为编译器,确定即可。

编译工程,在重新执行 config 命令后,即可右击工程名称,点击Build project,完成编译过程。

为程序添加参数:右击工程名称,Run As -> Debug Configerations 中选择 Arguments 选项卡,选择ffmpeg,在其中添加 -i 01.mp4 01.mkv,可以实现格式转换。

将01.MP4文件拷贝到到目前为止,程序可以通过Eclipse运行。

7. FFmpeg 代码 Debug

刚才的工程可以运行,但不能debug。解决此问题,首先认定一点,生成的可执行程序中,ffmpeg 不包含调试信息,调试信息在 ffmpeg_g 中,debug 要选择 ffmpeg_g。

另外,./config选项也是确定包含调试信息的核心,根据网上的信息,主要注意一下几点。需要在config中添加:

  • –enable-debug=3 开启debug调试
  • –disable-asm 禁用asm优化
  • –disable-optimize 禁用优化
  • –disable-stripping 禁用剥离可执行程序和共享库

采用以下命令重新config

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-debug=3 --disable-asm --disable-stripping

--enable-version3 --disable-optimizations --disable-asm --enable-shared --enable-pic

PATH="/home/rong/bin:$PATH" PKG_CONFIG_PATH="/home/rong/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="/home/rong/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I/home/rong/ffmpeg_build/include" \
  --extra-ldflags="-L/home/rong/ffmpeg_build/lib" \
  --bindir="/home/rong/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree \
  --enable-pthreads \
  --enable-debug=3 \
  --disable-optimizations \
  --disable-asm \
  --disable-stripping

右击工程名称,点击Build project,完成编译过程。为程序添加参数:右击工程名称,Debug As -> Debug Configerations中选择Arguments选项卡,选择ffmpeg_g,在其中添加-i 01.mp4 01.mkv,可以实现Debug。

我们想要的源代码呢?其实做一个简单的操作就可以:单击右上角Debug前面的按钮并选择C/C++,就能看到C代码了。调试过程中所用到的四个控制按键:

  • F5:单步调试,遇到函数时进入函数内部,相当于VS的F11;
  • F6:单步调试,遇到函数时跳过,相当于VS的F10;
  • F7:单步调试,从当前方法中跳出,相当于VS中的Shift+F11;
  • F8:调试运行程序,直到第一个断点,相当于VS中的F5.

猜你喜欢

转载自www.cnblogs.com/jimodetiantang/p/9160183.html