https://www.cnblogs.com/Tmc-Blog/p/5090230.html
什么是ffmpeg?What is ffmpeg?
ffmpeg是一个非常有用的命令行程序,它可以用来转码媒体文件。它是领先的多媒体框架FFmpeg的一部分,其有很多功能,比如解码、编码、转码、混流、分离、转化为流、过滤以及播放几乎所有的由人和机器创建的媒体文件。
在这个框架中包含有各种工具,每一个用于完成特定的功能。例如,ffserver能够将多媒体文件转化为用于实时广播的流,ffprobe用于分析多媒体流,ffplay可以当作一个简易的媒体播放器,ffmpeg则能够转换多媒体文件格式。
如果你感兴趣,以下列出的是FFmpeg框架中包含的开发者库:
libavutil是一个包含简化编程功能的库,其中包括随机数生成器,数据结构,数学代码,核心多媒体工具等更多东西。
libavcodec是一个包含音频/视频解码器和编码器的库。
libavformat是一个包含了多媒体格式的分离器和混流器的库。
libavdevice是一个包含输入输出设备的库,用于捕捉和渲染很多来自常用的多媒体输入/输出软件框架的数据,包括Video4Linux,Video4Linux2,VfW和ALSA。
libavfilter是一个包含媒体过滤器的库。
libswscale是一个用于执行高度优化的图像缩放和颜色空间/像素格式转换操作的库。
libswresample是一个用于执行高度优化的音频重采样,重新矩阵和取样格式转换操作的库。
注意:ffmpeg和FFmpeg不是同一个东西。FFmpeg是框架,而ffmpeg是一个其中的一个功能。
开始行动
如果你想跟着教程做,你需要在你的linux机中安装ffmpeg命令行功能。Ubuntu用户可以在终端运行以下命令轻松安装ffmpeg功能。
sudo apt-get install ffmpeg
Fedora用户可以从源中直接安装ffmpeg。
yum install ffmpeg
或者你可以编译源代码。在你使用源代码编译并安装它之前,你需要从官网上下载源代码,使用以下命令。
wget http://www.ffmpeg.org/releases/ffmpeg-2.2.3.tar.bz2
用下面命令解压文档。
tar -xvjf ffmpeg-2.2.3.tar.bz2
文档解压完成后进入解压后的目录运行以下命令。
./configure
make
编译完成后运行下面的命令安装ffmpeg。
su -c ‘make install’
全部的事情并没有完成,而你将要做的所有事就是在终端键入一些命令而且将能够从任何视频文件中抓取图片。
在做之后的步骤前,确保你在想要提取图片的视频文件的目录下。使用cd命令切换到正确的目录。教程中我使用的视频在我的桌面上,我用以下命令将目录切换到我的桌面。
cd /home/oltjano/Desktop
之后我使用以下命令从视频中提取图片。
ffmpeg -i “你是我的小呀小苹果儿.mp4” -r 1 -q:v 2 -f image2 image-3%d.jpeg
-i选项用来获取输入文件,在这里是视频文件名你是我的小呀小苹果儿.mp4,-r选项设置每秒提取图片的帧数。我想要每秒提取一帧。
之后有一个重要的选项是-q:v,应该留意这个选项并且我很喜欢用它,它用来设置提取到的图片质量。我总是设置值为2来从视频中获取高质量图片。
可能会出现的问题1:
linux下编译ffmpeg报错gcc is unable to create an executable file C compiler test failed.
原因:linux系统没有安装gcc编译器
su root //切换到root用户下
yum install gcc
终端输入上述命令安装即可
可能会出现的问题2:
安装ffmpeg过程中,执行./configure时,报yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误,
分析、解决如下:
分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。
解决:安装yasm编译器。安装方法如下:
在http://www.tortall.net/projects/yasm/releases下面找到适合自己平台的yasm版本。然后进行安装。举例如下:
1)下载:wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
2)解压:tar zxvf yasm-1.3.0.tar.gz
3)切换路径: cd yasm-1.3.0
4)执行配置: ./configure
5)编译:make
6)安装:su -c ‘make install’
可能会出现的问题3:
xxx is not in the sudoers file. This incident will be reported
出现这个问题,是因为执行sudo命令的用户不在sudoers文件的列表中。
可以通过编辑sudoers文件,来解决这个问题
编辑sudoers文件有两种办法,一种是以root帐号执行vi sudo,
另一种是root帐号执行vi /etc/sudoers.
其实两者都是修改/etc/sudoers。
1.切换到root用户下, ssh root@…
2./etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限, 添加sudo文件的写权限,命令是:
chmod u+w /etc/sudoers
3.编辑sudoers文件
vi /etc/sudoers
为了让用户tuzhu能够执行sudo命,你可以在sudoers文件中加上一下上面四行的任意一行。
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)
ps:这里说下你可以sudoers添加下面四行中任意一条
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers
这样普通用户就可以使用sudo了
/
当然如果你理解上面的原理后,可以直接输入如下命令解决此问题
具体操作方法:
su root 或者 su - 命令是切换到 root用户,
然后通过 echo ‘xxx ALL=(ALL) ALL’ >> /etc/sudoers (其中xxx代表用户名)
命令 为sudoers 文件添加内容
然后 使用sudo su 就可以 sudo了。