FFmpeg 的视音频编解码功能非常强大,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。例如,它可以用于做各种格式转换,视音频编解码,Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音等视频频播放器的内核就是 FFmpeg。

FFmpeg 是开源的,非常适合研究学习

FFmpeg 是开源的,由C语言开发,因此语法方面很简单,非常适合研究学习。要学习和使用 FFmpeg,首先需要编译和安装它,本文将介绍如何在Ubuntu上编译并安装它。

使用 apt 命令安装

大都数 Ubuntu 中都可使用 apt 命令安装相应的程序,例如执行下面这条命令即可安装 FFmpeg:

$ apt install ffmpeg

但是,这样安装的 FFmpeg 不太利于控制版本,其环境作用域也是用户全局的,我个人不喜欢这样。下文将介绍如何从官网下载源代码编译安装到指定的目录,而且有了源代码,在之后的学习和使用中遇到问题,也方便排查。

下载

下载过程很简单,使用 wget 命令即可,下面这条命令从官网下载了 FFmpeg 的 3.1.11 版本,-c选项让 wget 具备断点续传的能力,避免中途意外中断导致需要完全重新下载。

wget -c 下载链接/ffmpeg-3.1.11.tar.xz

编译安装

下载完毕后,使用 tar 命令解压,进入解压后的目录,建立 build 目录,之后编译和安装的临时中间过程都在 build 目录中进行:

$ tar xf ffmpeg-3.1.11.tar.xz

$ cd ffmpeg-3.1.11

$ mkdir build

$ cd build

$ ../configure --prefix= --enable-shared

通过 configure 可以生成编译过程使用的 makefile,--prefix后可指定安装目录。

我不太喜欢将软件安装到系统目录,避免其污染系统环境,同时,将软件安装到指定目录,也方便部署,和指定使用的软件版本。

不过,在执行 ../configure 命令时,我遇到了下面这样的错误:

yasm/nasm not found or too old. Use --disable-yasm for a crippled build.

其实原因很明显,系统找不到yasm/nasm库或者这两个库的版本太旧而已,而 FFmpeg 给出了相应的解决方法:在 configure 时指定--disable-yasm禁止yasm即可。但是我不想禁止,于是执行下面的命令:

$ sudo apt update

$ sudo apt install yasm

此时再执行../configure --prefix=...就可以生成 makefile 了,输入 make -j 命令使用可用 cpu 参与编译:

$ ../configure --prefix= --enable-shared

$ make -j

稍后片刻,即可编译完毕,得到类似于下面这样的输出:

FFmpeg编译完毕

之后便可输入

$ make install

将 FFmpeg 安装到之前我们指定的目录中:

安装后的FFmpeg

测试

进入安装目录的bin目录,执行可执行程序ffmpeg:

$ cd /bin

$ ./ffmpeg

发现报错,提示找不到相应的库libavdevice.so.57:

./ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory

出现这样的错误原因很简单——因为我们没有把相应的 ffmpeg 库安装到系统目录,自定义的目录并不在系统搜索范围内。事实上,使用 ldd 命令能够找出ffmpeg程序需要链接的所有库:

FFmpeg 的库都是“not found”

可见,FFmpeg 的库都是“not found”。要解决这样的问题很简单,只需将库导入到相应的环境变量即可:

$ export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH

再次执行./ffmpeg命令,发现正常了:

正常执行ffmpeg命令

至此,在Ubuntu16.04 上从源码编译和安装FFmepg-3.1.11就完成了。

点个关注再走吧

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

未经许可,禁止转载。

举报/反馈

C语言自动刷视频源码,使用C语言快速制作一个视频播放器,使用这个开源库就可以了...相关推荐

  1. 【web前端特效源码】使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT编程

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTY ...

  2. 【web前端特效源码】使用HTML5+CSS3制作一个会动的不规则斑点边框半径动画的动画效果~~适合初学者~超简单~ |前端开发

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的不规则斑点边框半径动画的动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCT ...

  3. 【web前端特效源码】使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...

  4. 【web前端特效源码】使用HTML5+CSS3制作一个会促销广告滚动字幕3D动画效果~~适合初学者~超简单~ |前端开发|IT软件

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会促销广告滚动字幕3D动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...

  5. c语言贪吃蛇游戏源码下载,c语言贪吃蛇游戏源码.doc

    c语言贪吃蛇游戏源码.doc /*运行是按任意键开始,不过呢,反向也算输哟*/include include include include include include include defin ...

  6. c语言图书借阅系统源码.zip,C语言编写的图书借阅管理系统源代码.doc

    确认键)delete(删除)ctre+系列的组合键,大致的基本桌面操作就是方向键↑←↓→移动光标和enter(回车/:所有文件"对话框 windows键+r打开"运行"对 ...

  7. C语言项目源码,C语言源码大全

    一.C语言源码大全 C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管 ...

  8. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  9. 通过语言包,让云豹短视频源码实现国际化运营

    本文以ios版本的云豹短视频源码为例,讲述如何通过加入语言包,让云豹短视频源码实现国际化运营. 一.配置 在Xcode中依次选中 projext – Localizations – 自己需要的语言[e ...

  10. 国际多语言出海商城返佣产品自动匹配订单源码

    国际多语言出海商城返佣产品自动匹配订单源码 8国多语言出海拼单商城 此网站是很多巴西客户定制的原型,已投放运营符合当地本地化 多语言商城返利返佣投资理财派单自带余额宝, 采取全新支付端口,后台语音提醒 ...

最新文章

  1. java学习笔记:使用dom4j解析xml
  2. 用Go语言建立一个简单的区块链part3:持久化和命令行接口
  3. Python字典(dict )的几种遍历方式
  4. android 批量查找view,Android Recyclerview实现多选,单选,全选,反选,批量删除的功能
  5. 怎么禁止开机启动nvidia
  6. Java基础学习总结(173)——Java 8到Java 15新功能总结
  7. html5怎么在index设置背景,index.html · huangliusong/HTML5Canvas知乎登录页面动态线条背景动画代码 - Gitee.com...
  8. 从程序员小仙飞升上神,java技术开发要如何实现?
  9. 数据库脏读,不可重复度,幻读以及对应的事务隔离级别
  10. iText导出pdf、word、图片
  11. Linux ELF文件学习(1)
  12. 机器学习模型融合stack详解及代码实战
  13. 企业发文的红头文件_【红头文件写作格式】 公司红头文件格式范本
  14. Flask开发 导入flask_uploads包时提示“IMPORTERROR: CANNOT IMPORT NAME ‘SECURE_FILENAME‘ FROM ‘WERKZEUG‘“
  15. 大学计算机教程王梦倩,【经验共享】中国矿业大学资源学院辅导员王梦倩
  16. 移动硬盘与电脑连接后 计算机中找不到,移动硬盘连接电脑后不显示盘符怎么办...
  17. Eclipse各版本代号一览表以及官网上有很多版本的eclipse,下载哪个版本比较合适呢?
  18. JS中设计模式的深入理解
  19. Excel二维交叉表恢复为一维表
  20. 商务办公软件应用与实践【7】

热门文章

  1. Linux如何实现自动文件同步?
  2. 二维图像的离轴数字全息及显示
  3. SVN客户端安装及汉化
  4. matlab里的copula函数,常见copula函数简介
  5. 评价一个推荐系统的指标详解!
  6. java数据结构与算法pdf下载
  7. 【python】ssh密码字典攻击
  8. Delphi2007,XE2 调用GetVersionEx在Win10下为6.1的原因及解决方法
  9. 如何在msdn下载纯净文件
  10. 破解密码很难?利用Python自动编写暴力破解字典,***必学技能!