您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

FFmpeg之Linux下编译与调试

时间:2022-01-20 13:26:32  来源:  作者: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


Tags:FFmpeg   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行1. 安装linux的基础环境基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句...【详细内容】
2022-01-20  Tags: FFmpeg  点击:(13)  评论:(0)  加入收藏
首先开始的时候我们插入一张雷神大大的图帮助大家理解一下我们今天的操作究竟属于那一步。 从上图可以看出我们要做的,就是将像素层的 YUV 格式,编码出编码层的 h264数据。首...【详细内容】
2022-01-14  Tags: FFmpeg  点击:(22)  评论:(0)  加入收藏
FFmpeg的作用: FFmpeg是一个优秀的多媒体框架; FFmpeg可以运行在Linux,Mac,Windows等平台; FFmpeg可以解码,编码,转码,复用,解复用,过滤音视频数据。播放器基本架构:image.pngSDL视频渲...【详细内容】
2021-10-27  Tags: FFmpeg  点击:(35)  评论:(0)  加入收藏
ffmpeg 常用基本命令资料推荐【免费】FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频教程-腾讯课堂1.分离视频音频流ffmpeg -i input_file -vcodec copy -an...【详细内容】
2021-10-15  Tags: FFmpeg  点击:(63)  评论:(0)  加入收藏
一、FFmpeg视频解码器1.视频解码知识1).纯净的视频解码流程压缩编码数据->像素数据。例如解码H.264,就是“H.264码流->YUV”。2).一般的视频解码流程视频码流一般存储在一定...【详细内容】
2021-05-19  Tags: FFmpeg  点击:(167)  评论:(0)  加入收藏
1.前言当我们在在看腾讯视频或者其他网页上的视频时,浏览器会先缓冲ts文件到你本地.如果你想把这些ts转成mp4文件保存在本地,可以使用ffmpeg进行格式转换。准备需要合成mp4而...【详细内容】
2021-04-25  Tags: FFmpeg  点击:(463)  评论:(0)  加入收藏
在实际工作中,通常需要ffmpeg作为工具来验证一个问题,比如播放一个视频,提取一个码流,转码视频,转封格式等,用的时候才发现忘记了相关命令,Google一番花老大的力气才找到自己需要的...【详细内容】
2020-09-27  Tags: FFmpeg  点击:(78)  评论:(0)  加入收藏
1.环境搭建和整体工程说明命令行输入:-i 3.flv -vcodec copy 2_audio.mp4 转码的CPU占有率。 需要在这个目录下,拷贝正确的SDL2.dll 转码过程: 转码成功后,MP4的大小要比3.fl...【详细内容】
2020-09-24  Tags: FFmpeg  点击:(132)  评论:(0)  加入收藏
1.框架分析 ffplay.c是FFmpeg源码⾃带的播放器,调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。例如哔哩哔哩著名开源项⽬ijkplayer也是基于ffplay.c进⾏⼆次开发。ffplay实...【详细内容】
2020-09-09  Tags: FFmpeg  点击:(111)  评论:(0)  加入收藏
一、前言采用ffmpeg解码,是所有视频监控开发人员必备的技能,绕不过去的一个玩意,甚至可以说是所有音视频开发人员的必备技能。FFmpeg是一套可以用来记录、转换数字音频、视频,并...【详细内容】
2020-08-08  Tags: FFmpeg  点击:(98)  评论:(0)  加入收藏
▌简易百科推荐
安全的编程方式:fopen() -> fflush() -> fsync() -> fclose()确保数据落盘的几种方法:1.open(O_DIRECT):write/read时,文件系统的IO会绕过cache...【详细内容】
2022-01-26  larkguo    Tags:IO缓存   点击:(2)  评论:(0)  加入收藏
背景很多时候,我们前端运行了个命令,比如传输大文件,一时半会,运行不完,想把命令放在后台运行,但是这个时候已经运行了一段时间了。又不想退出,重新nohup执行。该怎么办呢?今天给大...【详细内容】
2022-01-24  研道鸠摩智    Tags:nohup   点击:(7)  评论:(0)  加入收藏
下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行1. 安装linux的基础环境基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句...【详细内容】
2022-01-20  Linux特训营    Tags:FFmpeg   点击:(13)  评论:(0)  加入收藏
date命令是显示或设置系统时间与日期很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期...【详细内容】
2022-01-20  入门小站    Tags:Linux   点击:(19)  评论:(0)  加入收藏
来源:入门小站(版权归原作者所有,侵删) Address already in use这个提示,想必大家遇到过,怎么能快速找到问题并解决呢?下面有几种姿势可以了解一下. 在对网络连接或特定于应用...【详细内容】
2022-01-14  Java识堂    Tags:端口   点击:(26)  评论:(0)  加入收藏
写在前面我遇到了什么问题: 很老的一个系统bug原因升级,大概五六年没有重启机器了,4A平台上面通过ssh远程连接Linux机器,偶尔连接不上 即使连接之后命令无法正常执行,执行了没有...【详细内容】
2022-01-13  山河已无恙i    Tags:SSH远程   点击:(41)  评论:(0)  加入收藏
激情冰雪,喜迎冬奥。相约冰场,助力冬奥。滑冰有哪些好处?滑冰初学者有哪些注意事项?为什么学会正确的摔倒姿势是“冰上第一课”?我们带着这些疑问接着往下看。滑冰对身体益处多多...【详细内容】
2022-01-12  首都健康    Tags:   点击:(19)  评论:(0)  加入收藏
小伙伴们好啊,今天咱们分享一个简单实用的Excel小技巧,快速提取文件夹内的所有文件名称。方法一:打开需要提取名称的文件夹,单击其中任意一个文件,按Ctrl+A 全选。依次单击【主页...【详细内容】
2022-01-12  Excel之家    Tags:文件名   点击:(31)  评论:(0)  加入收藏
在Linux环境下,使用tail查找日志文件是比较常用的操作,密密麻麻的日志里面,要找到自己想要的内容是一个不容易的事情,如果自己要找的内容能高亮,那就直观多了。操作如下1.高亮关...【详细内容】
2022-01-12  熊利宏Python    Tags:Linux   点击:(58)  评论:(0)  加入收藏
Linux下查看网卡速率信息: 一、使用ethtool命令webethtool ethx #查看支持的速率 ethx 为网卡名,使用 ifconfig -a ,ip a 查询。响应数据中: Link detected 为yes表示网卡已经...【详细内容】
2022-01-11  葫芦儿的成长记录    Tags:Linux   点击:(33)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条