Ubuntu Desktop 编译 ffmpeg (简略的写写)
关于ffmpeg
FFmpeg是一個自由軟體,可以執行音訊和視訊多種格式的錄影、轉檔、串流功能,包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫,以及libavformat——一個音訊與視訊格式轉換函式庫。
--以上内容摘自 https://zh.wikipedia.org/wiki/FFmpeg
环境
Ubuntu Desktop 16.04 LTS
FFmpeg配置
1.关于yasm
在安装ffmpeg之前,还是先安装下yasm吧
(其实,也可以不装,在编译ffmpeg的时候加上 --disable-yasm 参数即可)
那么yasm是做什么用的呢?
Yasm is a complete rewrite of the NASM assembler under the “new” BSD License (some portions are under other licenses, see COPYING for details).
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source debugging information in STABS, DWARF 2, and CodeView 8 formats.
Yasm can be easily integrated into Visual Studio 2005/2008 and 2010 for assembly of NASM or GAS syntax code into Win32 or Win64 object files.
以上是yasm官网的解释
其实就是英特尔X86架构下的汇编器和反汇编器,可以用来编写16位、32位(IA-32)和64位(x86-64)的程序。
2.安装yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxf yasm-1.3..tar.gz
cd yasm-1.3./
./configure
make
sudo make install
sudo ldconfig
3.编译ffmpeg
tar -jxf ffmpeg-4.0..tar.bz2 #我这里已经下载好了
cd ffmpeg-4.0./
./configure --prefix=/usr/local/ffmpeg --enable-shared
make
sudo make install
--enable-shared 参数据说是允许其编译产生动态库,在以后的编程中要用到这个几个动态库。
4.给ffmpeg设置环境变量
sudo vi /etc/profile
加入以下内容:
FFMPEG=/usr/local/ffmpeg
export PATH="$FFMPEG/bin:$PATH"
使修改立即生效
source /etc/profile6
5.为了防止执行程序找不到库文件
可以将/usr/local/ffmpeg/lib目录设置到LD_LIBRARY_PATH环境变量
6.找不到库文件
环境变量设置完成后
ffmpeg -version
检查下安装是否有问题
正常情况是显示这个
ffmpeg -version
ffmpeg version 4.0. Copyright (c) - the FFmpeg developers
built with gcc (Ubuntu 7.3.-16ubuntu3)
configuration: --prefix=/usr/local/ffmpeg --enable-shared
libavutil . 14.100 / . 14.100
libavcodec . 18.100 / . 18.100
libavformat . 12.100 / . 12.100
libavdevice . 3.100 / . 3.100
libavfilter . 16.100 / . 16.100
libswscale . 1.100 / . 1.100
libswresample . 1.100 / . 1.100
若出现 ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file 错误
修改/etc/ld.so.conf 在最后一行加上
/usr/local/ffmpeg/lib
例如
include /etc/ld.so.conf.d/*.conf
/usr/local/ffmpeg/lib #在后面加上这段
再执行
sudo ldconfig
并修改 /usr/local/ffmpeg/lib目录下的文件权限为777
检查下库是否加载到
ldd $(which ffmpeg)
ffmpeg -version
我是在Ubuntu的桌面版安装的,如果你是server版,可能会缺少很多库。请参考这里 在Ubuntu Server上编译FFmpeg
比较完整的编译安装,请参考官网文档 Compile FFmpeg for Ubuntu, Debian, or Mint
Ubuntu Desktop 编译 ffmpeg (简略的写写)的更多相关文章
- 在Ubuntu下编译FFmpeg
第一步:准备编译环境 .tar.bz2 -2245/ ./configure --enable-static--enable-shared--prefix=/usr/localmakesudomake ...
- ubuntu 下 编译ffmpeg 3.1.1
1,下载ggmpeg源码:http://ffmpeg.org/download.html 2.下载ndk ,百度 3.配置环境 3.1 编译FFMPEG时,出现了 ffmpeg yasm not fo ...
- ubuntu下编译ffmpeg+SDL+ffplay提取motion vector
编译ffmpeg: 第一步: 从官网http://ffmpeg.org/下载最新版本. 解压tar -xjvf ffmpeg-3.3.1.tar.bz2 进入目录cd ffmpeg-3.3.1 第二步 ...
- [笔记] Ubuntu下编译ffmpeg+openh264+x264
[下载代码] - ffmpeg: git clone git://source.ffmpeg.org/ffmpeg.git - openh264: git clone https://github ...
- ubuntu下编译ffmpeg并用eclipse调试
一.下载ffnpeg源码 下载地址:http://ffmpeg.org/download.html 二.解决版本问题 可能之前你编译过ffmpeg,或者装过相关的库,那都要先卸载掉,否则用的时候会报一 ...
- Linux下编译ffmpeg并用GDB调试
1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...
- 【FFMPEG】Ubuntu上安装FFMPEG
在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...
- ubuntu下编译原生ffmpeg
本文主要介绍Linux 系统下如何编译Ffmpeg,编译环境是Ubuntu 16.04,Ffmpeg版本是3.4.2.Windows环境 下如何编译ffmpeg前面有博文介绍,也录有视频,感兴趣的同学 ...
- Ubuntu下安装和编译ffmpeg
参考:http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 1.安装依赖包 sudo apt-get update sudo apt-get -y ...
随机推荐
- sqlalchemy orm介绍
ORM介绍 简解:用户会使用ORM时会直接访问对象,对象在通过ORM与数据库进行交互,不需要用户操作sql. 详解:orm英文全称object relational mapping,就是对象映射关系程 ...
- HBase scan setBatch和setCaching的区别
HBase的查询实现只提供两种方式: 1.按指定RowKey获取唯一一条记录,get方法(org.apache.hadoop.hbase.client.Get) 2.按指定的条件获取一批记录,scan ...
- 王之泰201771010131《面向对象程序设计(java)》第九周学习总结
第一部分:理论知识学习部分 第7章异常.日志.断言和调试 概念:异常.异常类型.异常声明.异常抛出. 异常捕获1.异常处理技术2.断言的概念及使用3.基本的调试技巧 1)异常的概念 a.Java的异常 ...
- AJAX理解
注:首先我们要明白请求是什么?请求分两种,一.静态请求(如:返回js.css.图片等) 二.动态请求(返回跟用户有关的数据) http(apache.nginx等)服务器会判断如果是一个静态请求,会直 ...
- Bumped!【最短路】(神坑
问题 B: Bumped! 时间限制: 1 Sec 内存限制: 128 MB 提交: 351 解决: 44 [提交] [状态] [命题人:admin] 题目描述 Peter returned fr ...
- C#树类型及其遍历
最近有个项目不仅需要取部门的层级关系,还要处理不规则的关系(移除某个部门),只有树结构才能实现相关遍历和操作. 涉及到的知识点:泛型.递归.数据结构 既然研究树类型就先来看下树的定义: 一棵树(tre ...
- jsp/servlet学习一之servlet初窥
Java Servlet技术简称Servlet技术,是java开发web应用的底层技术.Servlet是一个java程序,一个servlet应用有一个或多个Servlet程序.jsp页面会被转换和编译 ...
- redis哨兵机制讲解
原文链接:https://blog.csdn.net/yswKnight/article/details/78158540 一.什么是哨兵机制? 答:Redis的哨兵(sentinel) 系统用于管理 ...
- Qt打开文件对话框同时选中多个文件或单个文件
Qt中打开单个文件 //str_path为文件路径 QString str_path = QFileDialog::getOpenFileName(this, tr("选择转码文件" ...
- MyEclipse运行Java出错:could not find the main class:test.program will exit(导入项目)
自己新建的项目运行没有任何问题.但是我导入的很早以前别人写的项目,然后run就会弹框could not find the main class:test.program will exit 请确认JA ...