FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
一、FFmpeg安装
安装依赖包:
yum install libtheora-devel libvorbis-devel
- 1
FFmpeg编译安装:
由于系统不同,会导致依赖也不尽相同,需根据报错信息逐渐安装依赖
可以自己到官网下载包
wget http://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
tar jxvf ffmpeg-4.0.2.tar.bz2
cd ffmpeg-4.0.2
# 如下是个人需要的编译参数,可以根据实际情况增减
./configure --prefix=/data/server/ffmpeg \
--enable-shared \
--enable-libfdk-aac \
--enable-gpl \
--enable-nonfree \
--enable-postproc \
--enable-avfilter \
--enable-pthreads \
--enable-libmp3lame \
--enable-libtheora \
--enable-libvorbis \
--enable-libx264 \
--enable-libx265 \
--enable-libxvid \ --enable-decoder=libx264 \ --enable-encoder=libx264 make && make install
安装后,查看版本
/data/server/ffmpeg/bin/ffmpeg -version
转码:
ffmpeg -i input.mp4 output.avi
二、FFmpeg安装错误解决
hg clone https://bitbucket.org/multicoreware/x265
cd x265/build/linux
./make-Makefiles.bash
make
make install
有的包下载缓慢,备用下载地址: http://pan.baidu.com/s/1hsEeSNM
- 报错:
yasm/nasm not found or too old. Use --disable-yasm for a crippled build
# rpm包存在的话,可以直接yum安装 yasm,没有则编译安装
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
./configure && make && make install
- 报错:
ERROR: libfdk_aac not found
https://sourceforge.net/projects/opencore-amr/files/fdk-aac/
下载fdk-aac-0.1.5.tar.gz
./configure&& make && make install
make 的时候报错
./libtool: line 990: g++: command not found报错信息
于是直接yum -y install gcc* 然后继续make
OK 通过~~
- 报错:
ERROR: libtheora not found
http://downloads.xiph.org/releases/theora/?C=M;O=D
libtheora-1.2.0alpha1.tar.gz
./configure && make && make install
- 如下报错:
*** Could not run Ogg test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means Ogg was incorrectly installed
*** or that you have moved Ogg since it was installed.
http://downloads.xiph.org/releases/ogg/?C=M;O=D
libogg-1.3.2.tar.gz
./configure && make && make install
- 报错:
ERROR: libvorbis not found
http://downloads.xiph.org/releases/vorbis/
libvorbis-1.3.3.tar.
- 报错:
ERROR: libmp3lame >= 3.98.3 not found
http://downloads.sourceforge.net/lame
我下到的是lame-3.99.5.tar.gz
./configure && make && make install
- 报错:
ERROR: libx264 not found
git clone git://git.videolan.org/x264.git
./configure --enable-shared --disable-asm && make && make install
- 报错:
ERROR: libxvid not found
wget http://downloads.xvid.org/downloads/xvidcore-1.3.5.tar.gz
cd build/generic/
./configure && make && make install
依赖包解决完之后编译出现
WARNING: Option --enable-decoder=libx264 did not match anything
WARNING: using libfdk without pkg-config
WARNING: using libx264 without pkg-config
原因是需要设置 PKG_CONFIG_PATH,通过pkg-config去指定路径自动寻找需要链接的依赖库,同时,就不需要使用
--extra-cflags=-I、
--extra-cxxflags=-I、
--extra-ldflags=-L来指定依赖库路径
使用方法:在./configure之前输入export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH(此路径为.pc文件所在路径),可使用
echo $PKG_CONFIG_PATH查看
- 库文件找不到时解决:
ldd /data/server/ffmpeg/bin/ffmpeg # 查看依赖库文件,找到no found的库文件
find / -name libavdevice.so # 查找库文件位置
vim /etc/ld.so.conf # 如存在,添加库文件位置
/usr/local/lib
ldconfig # 重新加载,使新库文件生效
来查看运行当前可执行文件需要哪些动态库

cd /data/server/ffmpeg/bin/
ldd ffmpeg
linux-vdso.so.1 => (0x00007fffcfeaf000)
libavdevice.so.57 => not found
libavfilter.so.6 => not found
libavformat.so.57 => not found
libavcodec.so.57 => not found
libswresample.so.2 => not found
libswscale.so.4 => not found
libavutil.so.55 => not found
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f41d6d9e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f41d6b7f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f41d67b9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f41d70c7000)

应该有很多人和我一样,不想编译FFMPEG之后还要动自己系统的环境,这时有一个简单的方法可以解决这个问题。就是在当前终端export一个环境变量。
cd /data/server/ffmpeg/bin/
export LD_LIBRARY_PATH=lib/
vim /etc/bashrc export LD_LIBRARY_PATH=/data/server/ffmpeg/lib/
export PATH=$PATH:/data/server/ffmpeg/bin/
还有找不见的
[root@iZm5eeyc1al5vzh8bo57zyZ etc]# cat ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
[root@iZm5eeyc1al5vzh8bo57zyZ etc]#
cd /data/server/ffmpeg/lib
ldconfig # 重新加载,使新库文件生效
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。的更多相关文章
- Unity 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
目录 一.FFmpeg简介. 二.FFmpeg常用参数及命令. 三.FFmpeg在Unity 3D中的使用. 1.FFmpeg 录屏. 2.FFmpeg 推流. 3.FFmpeg 其他功能简述. 一. ...
- 基于Red5与ffmpeg实现rtmp处理NVR或摄像头的监控视频处理方案
背景 各大监控视频平台厂商与外对接均是基于IE的OCX插件方式提供实时视频查看.历史视频回放与历史视频下载.在h5已大行其道的当下,基于IE的OCX插件方式已满足不了广大客户的实际需求,因此需要一个兼 ...
- javascript 中关于对象转换数字值的一些特点
下面是摘至<Javascript 高级程序设计第三版>里的一段话 是关于对象转换数字值的一些规则 "在应用于对象时,先调用对象的valueOf()方法以取得一个可供操作的值.然后 ...
- 数据库记录转换成json格式 (2011-03-13 19:48:37) (转)
http://blog.sina.com.cn/s/blog_621768f30100r6v7.html 数据库记录转换成json格式 (2011-03-13 19:48:37) 转载▼ 标签: 杂谈 ...
- Oracle数据库多行记录转换一行并排序函数
Oracle数据库多行记录转换一行并排序方法 在ORACLE数据库查询中,我们通常会要求用到将多行记录转换成一行并排序,这时候我们自然会想到Oracle的一个“wx_concat”函数,可以将多行记录 ...
- JavaScript 转换数字为整数的方法
本文将会列举并说明JavaScript 把一个number(或者numerical的对象)转换成一个整数相关方法. 使用parseInt parseInt的语法如下:parseInt(string, ...
- 音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw
音频视频编程相关:GStreamer/ffmpeg/directshow/vfw linux和window下几种流行的音频视频编程框架作一个总结,防止自己迷惘,免于晕头转向. 一.GStreamer ...
- [视频转换] C#VideoConvert视频转换帮助类 (转载)
点击下载 VideoConvert.zip 主要功能如下 .获取文件的名字 .获取文件扩展名 .获取文件类型 .视频格式转为Flv .生成Flv视频的缩略图 .转换文件并保存在指定文件夹下 .转换文件 ...
- FFMPEG 最简滤镜filter使用实例(实现视频缩放,裁剪,水印等)
FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字符,然后从终端输出.我在该实例的基础上稍微的做了修改,使它能够保存滤镜处理过后的文件.在上代码之前先明白几个概念: Fi ...
随机推荐
- jetty分析
jetty处理过程: 1 new Server() (1)初试化线程池 生成固定大小线程数,新来的线程放入BlockingQueue. (2)初始化ServerConnector 初始化 sche ...
- python pip ez_setup.py
#!/usr/bin/env python """Bootstrap setuptools installation To use setuptools in your ...
- function几种自执行的形式
1.(function(){})();这种是最常用的形式 2.var t = function(){}(); 3.-function(){}(); 这三种形式都能自执行
- 杭电acm 1037题
本题应该是迄今为止最为简单的一道题,只有一组输入,输出也简单.... /****************************************** 杭电acm 1037题 已AC ***** ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-002插入排序法(Insertion sort)
一.介绍 1.时间和空间复杂度 运行过程 2.特点: (1)对于已排序或接近排好的数据,速度很快 (2)对于部分排好序的输入,速度快 二.代码 package algorithms.elementar ...
- tcpdump/HTTP协议实践
tcpdump/HTTP协议实践 客户端: CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAI ...
- 《Effective Java》第3章 对于所有对象都通用的方法
第8条:覆盖equals时请遵守通用约定 覆盖equals方法看起来似乎很简单,但是有许多覆盖方式会导致错误,并且后果非常严重.最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每 ...
- Django之request对象
在view.py的函数中.我们的函数中第一个参数都是request.在request中有一些信息,比如正在加载这个页面的用户是谁,或者是用什么浏览器之类的.这对于我们网站的管理是很有用处的. requ ...
- XCode9: iPhone is busy: Preparing debugger support for iPhone
这个好像是等一阵子就可以了 参考链接
- Mybatis的输出结果封装
resultType属性可以指定结果集的类型,它支持基本类型和实体类类型. 需要注意的是,它和parameterType一样,如果注册过类型别名的,可以直接使用别名. 没有注册过的必须使用全限定类名. ...