龙空技术网

FFmpeg之Linux下编译与调试

Linux特训营 386

前言:

如今咱们对“ubuntu安装mercurial”大概比较注意,大家都想要剖析一些“ubuntu安装mercurial”的相关内容。那么小编在网络上收集了一些对于“ubuntu安装mercurial””的相关文章,希望看官们能喜欢,看官们一起来学习一下吧!

下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行

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  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  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  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   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  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 配置编译后并不能进行调试,需要如下配置.

4. FFmpeg 代码 Debug

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

另外,./config选项也是确定包含调试信息的核心,需要在config中添加:

-–enable-debug=3:开启debug调试-–disable-asm:禁用 asm 优化--disable-optimizations:禁用优化,以便调试时按函数顺序执行。–-disable-stripping:禁用剥离可执行程序和共享库,即调试时可以进入到某个函数进行单独调试。

采用以下命令重新config:

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
总结:详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

一些注意事项;在使用 ffplay 播放生成 h264 格式的视频时,播放速度会加快,解决方式:不要使用 FFmpeg 转码生成纯 h264 格式的视频,要使用一种容器包含 h264 视频,即生成一种音视频流格式,也就是不要生成纯粹的 h264 码流,而是生成诸如 mkv 等格式的文件。

标签: #ubuntu安装mercurial #ubuntulibva