FFmpeg之Linux下编译与调试
注:下面的一切都是在 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 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 配置编译后并不能进行调试,需要如下配置.
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
一些注意事项:
- 在使用 ffplay 播放生成 h264 格式的视频时,播放速度会加快,解决方式:不要使用 FFmpeg 转码生成纯 h264 格式的视频,要使用一种容器包含 h264 视频,即生成一种音视频流格式,也就是不要生成纯粹的 h264 码流,而是生成诸如 mkv 等格式的文件。
FFmpeg之Linux下编译与调试的更多相关文章
- 在Linux下编译带调试功能的Bochs
在Linux下使用Bochs参考: http://wangcong.org/articles/bochs.html http://kinglaw05.blog.163.com/blog/static/ ...
- Linux下编译与调试
gcc/g++编译器 对于.c格式的C文件,可以采用gcc或g++编译 对于 .cc..cpp格式的C++文件,应该采用g++进行编译 常用的选项: -c 表示编译源文件 -o 表示输出目标文件 ...
- FFmpeg在Linux下编译使用
文章转自:http://www.cnblogs.com/CoderTian/p/6655568.html 1.FFmpeg编译 1.1.安装yasm 这里我是直接通过ubuntu包安装的,当然也可以通 ...
- FFmpeg在Linux下安装编译过程
转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下 ...
- linux下编译ffmpeg 引入外部库x264
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...
- FFmpeg在Linux下搭建 ***
今天介绍下FFmpeg在Linux下安装编译过程,总体过程比较顺利,就是在ffmpeg等的时间稍长点,仅当记录. 关于FFmpeg FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- [转载]linux下编译php中configure参数具体含义
编译N次了 原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...
随机推荐
- [NOIP2018模拟10.15]比赛报告
闲扯 昨晚又颓到好晚,Yali的降智光环感觉持续至今... 题面好评 T1T3都玩过 逃) T1没看多久就开始写二分+并查集 然后T3看着眼熟想了一个多小时...结果啥都没想出来 赶紧看T2发现还是没 ...
- Python打
.智能识别图片物体.这步是智能垃圾分类的魔法核心.原理是人工智能会根据打上标签的海量图片来识别新的图片所归属的分类标签.好奇的读者可能会问,我没学过深度学习啊?我也不会训练模型,怎么办? python ...
- 微信小程序wxs如何使用
新建一个.wxs文件 <!-- 引入.wxs文件 src为相对路径,module指定当前模块的名称 --> <wxs module="filter" src=&q ...
- echarts —— 绘制横向柱状图(圆角、无坐标轴)
UI给了设计图,看了一眼觉得简单,不就是无序列表布局嘛(ul,li),后来才知道那是echarts图,好吧,样式如下: 代码如下:(渐变色没做) <!DOCTYPE html> <h ...
- sqlserver 2008修改数据库表的时候错误提示“阻止保存要求重新创建表的更改”
当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改.您所做的更改要求删除并重新创建以 ...
- V.24 V.35 ISDN E1 POS这些常见的广域网接口
转:http://blog.sina.com.cn/s/blog_bc1c78600101l2ss.html 广域网(Wide Area Network)是一种跨地区的数据通讯网络,通常是一个局域网到 ...
- linux入门常用指令2.安装nginx
下载nginx包 nginx-1.10.3.tar.gz 解压 [root@localhost src]# tar -zxvf nginx-1.10.3.tar.gz [root@localhost ...
- Ubuntu系统---安装 WPS
Ubuntu系统---安装 WPS Ubuntu桌面系统自带了Libreoffice办公软件,但是个人觉得它不符合我们中国人的使用习惯.搜索了Office For Linux,好麻烦,也会出现问题, ...
- C# MVC 视图 计算某一个列的总和
需求:在需要计算每一列的总和显示在最后一行 eg; AA BB CC 1 2 3 1 2 3 SUM 2 4 6 大概是酱紫 我用的是mvc Mo ...
- [USACO19FEB]Cow Dating——找规律
原题戳这里 题解 显然原题等价于让我们求这个式子\(\prod\limits_{i=l}^{r}(1-p_i)\sum\limits_{i=l}^{r}\frac{p_i}{1-p_i}\)的最大值是 ...