ffmpeg安装及使用

centos linux下安装ffmpeg

1、下载解压

wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz

tar -zxvf ffmpeg-3.1.tar.gz

2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录

cd ffmpeg-3.1

./configure --prefix=/usr/local/ffmpeg

make && make install

3、配置变量

vi /etc/profile

在最后PATH添加环境变量:

export PATH=$PATH:/usr/local/ffmpeg/bin

保存退出

查看是否生效

source /etc/profile 设置生效

4、查看版本

ffmpeg -version 查看版本

注意:

若安装过程中出现以下错误:

yasm/nasm not found or too old. Use --disable-yasm for a crippled build. If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the [email protected] mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file "config.log" produced by configure as this will help solve the problem.

需要安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

tar -zxvf yasm-1.3.0.tar.gz

cd yasm-1.3.0

./configure

make && make instal

以上内容参考linux下安装ffmpeg的详细教程_linux安装ffmpeg_Magicflowersbloom的博客-CSDN博客

ffmpeg常用的命令

2.1 音频转码

直接转码:

ffmpeg -i input.mp3 output.m4a

指定编码器、采样率、声道数转码:

ffmpeg -i input.mp3 -acodec aac -ac 2 -ar 44100 output.m4a

2.2 音频剪切

-ss 10指定从第10秒开始,-t 20代表剪切20秒

ffmpeg -i input.mp3 -ss 10 -t 20 cut.mp3

2.3 音频拼接

ffmpeg -i concat:"hello.mp3|world.mp3" -acodec copy -vn concat.mp3

2.4 音频混音

使用amix,参数inputs代表输入流个数,duration有longest、shortest、first三种模式,weights设置每条流音量权重占比:

ffmpeg -i hello.mp3 -i world.mp3 -filter_complex amix=inputs=2:duration=first -vn mix.mp3

使用amerge,合并成多声道输出:

ffmpeg -i hello.mp3 -i world.mp3 -filter_complex [0:a][1:a]amerge=inputs=2[aout] -map [aout] merge.mp3

2.5 空灵音效

aecho接收4个参数:in_gain (0, 1];out_gain (0, 1];delays (0 - 90000];decays (0 - 1.0]

ffmpeg -i input.mp3 -af aecho=0.8:0.8:1000:0.5 echo.mp3

2.6 惊悚音效

tremolo接收2个参数:frequency [0.1, 20000.0];depth (0, 1]

ffmpeg -i input.mp3 -af tremolo=5:0.9 tremolo.mp3

2.7 搞笑音效

搞笑音效通过调节音速实现,使用atempo:

ffmpeg -i input.mp3 -filter_complex atempo=2 atempo.mp3

2.8 静音检测

ffmpeg -i input.mp3 -af silencedetect=noise=0.0001 -f null -

2.9 修改音量

ffmpeg -i input.mp3 -af volume=0.5 volume.mp3

2.10 抽取音频

从视频抽取音频,直接disable视频流:

ffmpeg -i input.mp4 -vn out.mp3

从视频抽取音频,disable视频流,音频进行转码:

ffmpeg -i input.mp4 -acodec aac -vn out.m4a

从视频抽取音频,如果存在多个音轨,可以指定某个音轨:

ffmpeg -i input.mp4 -map 0:1 -vn out.mp3

2.11 音乐频谱波形图

使用showwavespic可以获取频谱波形图,以图像形式输出,参数s指定图像的宽高,示例如下:

ffmpeg -i input.mp3 -filter_complex showwavespic=s=1280x720 waveform.png

3、视频常见操作

3.1 视频剪切

基本剪切,指定起始时间、剪切时长:

ffmpeg -i input.mp4 -ss 10 -t 20 -codec copy cut.mp4

精确剪切,包含多音轨,-map 0代表所有track流进行剪切,-accurate_seek代表精确seek:

ffmpeg -ss 10 -accurate_seek -i input.mp4 -t 20 -map 0 -codec copy cut.mp4

3.2 视频转码

使用-vcodec指定视频编码,-acodec指定音频编码,-s 640x480指定视频分辨率,-b 200k指定码率,-r 20指定帧率,这样达到视频压缩效果:

ffmpeg -i input.mp4 -vcodec libx264 -acodec aac -s 640x480 -b 200k -r 20 transcode.mp4

3.3 视频截图

使用-vframes指定截图数量,-ss指定起始时间放在-i前面,这样保证先seek到指定位置再截图。如果是先-i指定输入文件再-ss,是从时间0开始解码,直到指定时间再截图,这样效率太低:

ffmpeg -ss 10 -i input.mp4 -f image2 -vframes 1 -an screenshot.jpg

3.4 图片水印

使用-filter_complex指定位置overlay=x:y,如下所示:

ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=10:20 pic_watermark.mp4

3.5 GIF水印

使用-ignore_loop 0代表GIF循环显示,其他操作与图片水印一致:

ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex overlay=10:20 gif_mark.mp4

3.6 去除水印

使用delogo命令,然后指定水印位置:

ffmpeg -i input.mp4 -filter_complex delogo=x=10:y=20:w=90:h=30 delogo.mp4

3.7 视频拼接

视频拼接分为垂直拼接、水平拼接,还有前后拼接,这里主要介绍垂直与水平拼接,其中使用hstack做水平拼接,vstack做垂直拼接:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex hstack out.mp4

3.8 视频翻转

使用reverse实现视频翻转,但是处理比较耗时:

ffmpeg -i input.mp4 -vf reverse -an output.mp4

3.9 视频降噪

使用-nr代表noise reduction,进行视频降噪:

ffmpeg -i in.mp4 -nr 500 out.mp4

3.10 视频抽帧

ffmpeg -ss 20 -accurate_seek -t 10 -i input.mp4 -an -r 5 %3d.jpg

3.11 播放速度

使用setpts设置视频速度,atempo设置音频速度:

ffmpeg -i in.mp4 -filter_complex [0:v]setpts=%.2f*PTS[v];[0:a]atempo=%.2f[a] -map [v] -map [a] out.mp4

3.12 插入封面

其中-disposition:v:1 attached_pic代表封面:

ffmpeg -i in.mp4 -i photo.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4

3.13 旋转视频

ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4

3.14 黑白视频

ffmpeg -i in.mp4 -vf lutyuv='u=128:v=128' out.mp4

3.15 转换3D的VR视频

使用ffmpeg的stereo3d可以把视频转换为3D视频,控制参数如下:

输入:

sbsl: 两边平行(左眼在左边,右眼在右边)

sbsr: 双眼交叉(右眼在左边,左眼在右边)

abl : 上下排列(左眼在上面,右眼在下面)

abr : 上下排列(右眼在上面,左眼在下面)

al : 交替显示(左眼奇数帧,右眼偶数帧)

ar : 交替显示(右眼奇数帧,左眼偶数帧)

输出:

arbg: 立体照片,红蓝颜色(左眼红色,右眼蓝色)

argg: 立体照片,红绿颜色(左眼红色,右眼绿色)

agmg: 立体照片,绿色紫红(左眼绿色,右眼紫红)

aybg: 立体照片,黄蓝颜色(左眼黄色,右眼蓝色)

示例如下:

ffmpeg -i input.mp4 -filter_complex stereo3d=sbsl:arbg stereo3d.mp4


版权声明:本文为CSDN博主「徐福记456」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u011686167/article/details/120879467

相关推荐
DjangoJason23 分钟前
计算机网络 : Socket编程
linux·服务器·开发语言·笔记·计算机网络
张哈大1 小时前
【 Redis | 实战篇 秒杀优化 】
java·数据库·redis·笔记·缓存
笑鸿的学习笔记3 小时前
虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系
笔记·ue5·虚幻
向上的车轮9 小时前
MATLAB学习笔记(七):MATLAB建模城市的雨季防洪排污的问题
笔记·学习·matlab
躺着听Jay10 小时前
Oracle-相关笔记
数据库·笔记·oracle
田梓燊10 小时前
数学复习笔记 19
笔记·线性代数·机器学习
逼子格10 小时前
硬件工程师笔记——二极管Multisim电路仿真实验汇总
笔记·嵌入式硬件·硬件工程师·multisim·硬件工程师学习·电子器件·电路图
龙湾开发11 小时前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
c++·笔记·学习·图形渲染·贴图
liang_202611 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结
汇能感知12 小时前
光谱相机的空间分辨率和时间分辨率
经验分享·笔记·科技