LinMao's Blog
学习科研记录与分享!

ffmpeg常用命令

FFmpeg( Fast Forward Mpeg)是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。很多软件都是基于这个做的,在linux下面直接在命令行中就可以使用,平时处理视频图片很方便,网上很多博客里面的命令报错,所以整理一下一些常用的命令。 FFmpeg不是Ubuntu自带的工具,需要apt安装:
sudo apt install ffmpeg
命令格式:
ffmpeg [全局选项] {[输入文件选项] -i 输入_url_地址} ... {[输出文件选项] 输出_url_地址} ...
下面总结一些常用的ffmpeg音视频及图像处理命令

查看视频信息

# 显示该媒体文件信息,以及FFmpeg细节,例如版本、配置细节、版权标记、构建参数和库选项等等
ffmpeg -i input.mp4
# 只显示媒体文件信息
ffmpeg -i input.mp4 -hide_banner
另外下面命令可以预览播放视频音频,附带在命令行中显示信息
# 预览视频
ffplay input.mp4
# 预览音频
ffplay input.mp3

从视频中提取图像

ffmpeg -i ./test/input.mp4 -r 10 -f image2 ./destination/%05d.jpg
-r – 设置帧速度。即,每秒提取帧到图像的数字。默认值是 25。 -f – 表示输出格式,即,在我们的实例中是图像。 %05d.jpg – 表明我们如何想命名提取的图像,图像可以其他的格式,比如.png。

将多张图片合成视频

带音频合成:
ffmpeg -threads2 -y -r 10 -i /image_path/image%04d.jpg -i audio.mp3 -absf aac_adtstoasc output.mp4
-threads 2:以两个线程进行运行, 加快处理的速度。 -y:对输出文件进行覆盖 -r 10:fps设置为10帧/秒 -absf aac_adtstoasc 编码音频格式,使之能在一些设备上能播放 不带音频合成:
ffmpeg -loop 1 -f image2 -i /image_path/image%04d.jpg -vcodec libx264 -r 10 -t 10 output.mp4
-loop:1循环读输入, 0读完就不读了 -vcode:编码格式为libx264

从视频中截取一段视频

ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
–ss – 表示视频剪辑的开始时间。在我们的示例中,开始时间是第 50 秒。 -t – 表示总的持续时间。

将视频切成几个片段

ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
-t 00:00:30 表示从视频的开始到视频的第 30 秒创建一部分视频。 -ss 00:00:30 为视频的下一部分显示开始时间戳。这里表示第 2 部分将从第 30 秒开始,并将持续到原始视频文件的结尾。

拼合多个视频

先创建一个文件的描述文件join.txt
file /home/sk/myvideos/part1.mp4
file /home/sk/myvideos/part2.mp4
file /home/sk/myvideos/part3.mp4
file /home/sk/myvideos/part4.mp4
然后执行拼接命令:
# 执行下面命令将上面四个视频片段合成一个视频
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
上面这个命令也可以用来将图片拼接成视频,只不过将join.txt稍微修改
file /home/sk/myvideos/part1.jpg
duration 5
file /home/sk/myvideos/part2.jpg
duration 1
file /home/sk/myvideos/part3.jpg
duration 5
file /home/sk/myvideos/part4.jpg
duration 2
file /home/sk/myvideos/part4.jpg
duration表示这张图播放时长,最后一个图要重复写一遍,但不用加duration。

设置视频宽高比

ffmpeg -i input.mp4 -aspect 16:9 output.mp4
-aspect 设置一个视频文件的屏幕高宽比

裁剪视频区域

ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
input.mp4:源视频文件 -filter:v:表示视频过滤器 crop :表示裁剪过滤器 w :想在源视频中裁剪的矩形的宽度 h :想在源视频中裁剪的矩形的高度 x :想在源视频中裁剪的矩形的 x 坐标 y :想在源视频中裁剪的矩形的 y 坐标

转换视频格式

# 这个命令不仅可以格式转换,对于用相机拍摄的视频还可以压缩视频文件大小
ffmpeg-i input.ogv -vcodec h264 output.mp4
# 简单方式
ffmpeg -i input.flv output.mpeg
# 如果想维持原视频的质量,使用-qscale 0 参数
ffmpeg -i input.webm -qscale 0 output.mp4

更改视频分辨率

# 将视频改成640×360
ffmpeg -i input.mp4 -vf scale=640:360 output.mp4 -hide_banner
# 将视频改成1280*720
ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4

更改视频帧率

下面两种改变FPS的方式只是-r的位置不同,效果就不同。 改变FPS,视频质量不变,视频时长改变:
# 如果原始视频是40fps
# 将视频帧率变成80fps
ffmpeg -r 80 -i input.mp4 output.mp4
# 将视频帧率变成20fps
ffmpeg -r 20 -i input.mp4 output.mp4
降低FPS,视频时长不变,视频质量变差:
# 如果原始视频是40fps
# 将视频帧率变成20fps,并且时长不变
ffmpeg -i input -r 20 output

更改视频播放速度

# 生成视频双倍速播放的视频
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
# 生成视频0.5倍速播放的视频
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output.mp4

给视频添加字幕

fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4

音频文件相关

压缩音频:
# 将音频压缩到128kbps
ffmpeg -i input.mp3 -ab 128 output.mp3
常见音频比特率:96kbps、112kbps、128kbps、160kbps、192kbps、256kbps、320kbps;比特率越高音质越好。 添加海报图像到音频文件:
ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
移除视频中的音频:
ffmpeg -i input.mp4 -an output.mp4
-an:表示没有音频录制 移除视频中的视频流(视频转音频):
ffmpeg -i input.mp4 -vn output.mp4
# 指定音频比特率320
ffmpeg -i input.mp4 -vn -ab 320 output.mp4
-vn:表示没有视频录制  
Reference: 给初学者的 20 多个 FFmpeg 命令示例 使用ffmpeg修改视频文件的分辨率 FFmpeg将多张图片合成视频
赞(0) 打赏
转载请注明出处:LinMao's Blog(林茂的博客) » ffmpeg常用命令

评论 抢沙发

静态归档版本,评论功能已关闭。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

LinMao's Blog(林茂的博客)

了解更多联系我们

觉得文章有用就打赏一下作者吧~

支付宝扫一扫打赏

支付宝

微信扫一扫打赏

微信