Linux系统上FFmpeg的使用命令

1、获取媒体文件信息:

ffmpeg -i video.mp4
ffmpeg -i audio.mp3

在这里插入图片描述
如上图,输出信息有很多,想要仅输出有关指定的媒体文件(编码器,流等)的详细信息,需要加入参数 -hide_banner

ffmpeg -i video.mp4 -hide_banner
ffmpeg -i audio.mp3 -hide_banner

在这里插入图片描述

2、转换媒体文件格式
比如将wmv转成MP4,avi转成MP4

ffmpeg -i video_input.wmv video_input.mp4
ffmpeg -i video_input.avi video_input.mp4

可以在输出文件之前指定-qscale 0参数以保留视频文件的质量:

ffmpeg -i video_input.wmv -qscale 0 video_input.mp4
ffmpeg -i video_input.avi -qscale 0 video_input.mp4

3、从视频文件中提取音频(-vn)
比如将视频文件(.MP4)中音频提取出来

ffmpeg -i video_input.mp4 -vn video_output.mp3

在这里插入图片描述
其他参数选项:
设置音频比特率: -ab

ffmpeg -i video.mp4 -vn -ab 128k audio.mp3

一些常见的比特率是96k、128k、192k、256k、320k(mp3支持的最高比特率)。

其他常见选项是-ar(音频:22050,441000,48000), -ac(音频通道数), -f(音频格式,尽管通常自动检测),-ab也可以用-b:a代替,例如:

ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b:a 128k -f mp3 audio.mp3

4、设置视频中的音频静音(-an)
比如将视频文件(.MP4)中音频设置为静音

ffmpeg -i video.mp4 -an video_no_audio.mp4

5、从视频中提取图像
将视频文件(.MP4)中音频提取出来

ffmpeg -i video.mp4 -r 1 -f image2 image-%2d.png

-r指定帧速率(在一秒内提取到帧中的帧数,默认值:25)数值越大提取出来的图像就越多, -f指定输出格式(image2实际上代表image2序列。最后一个参数(输出文件)有一个有趣的命名:它最后使用%3d,这只是用3位数字(000,001等)对图像进行编号,如果需要还可以使用%2d(2位数格式)或甚至%4d(4位数格式)

6、更改设置视频分辨率或宽高比(-s、-aspect)
比如将视频的分辨率更改成1024x800

ffmpeg -i video.mp4 -s 1024x800 output.mp4

比如将视频的宽高比更改成3:2

ffmpeg -i video.mp4 -aspect 3:2 output.mp4

7、为音频文件设置背景图
比如将image.jpg添加到audio.mp3中

ffmpeg -loop 1 -i image.jpg -i audio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

注意:如果使用的是较新版本(4.x),则不必使用-strict experimental。

ffmpeg -loop 1 -i image.jpg -i audio.mp3 -c:v libx264 -c:a aac -b:a 192k -shortest output.mp4

8、为视频设置字幕
字幕文件的格式类似于下图,将内容写入文本文件中,并将后缀命名为.srt
在这里插入图片描述

ffmpeg -i video.mp4 -i video.srt -c:v copy -c:a copy -preset veryfast -c:s mov_text -map 0 -map 1 output.mp4

9、压缩媒体文件
对于音频文件,只需降低比特率(使用-b:a或-ab):

ffmpeg -i audio_input.mp3 -ab 128k audio_output.mp3
ffmpeg -i audio_input.mp3 -b:a 192k audio_output.mp3

同样,一些不同的比特率值是:96k、112k、128k、160k、192k、256k、320k,比特率越高,文件大小和质量越高。

对于视频文件,可以设置-crf选项(恒定速率因子),较低的crf意味着较高的比特率,此外,使用libx264作为视频编解码器有帮助,这是一个非常有效的尺寸减少,质量降低很少,20至30的crf是常见的,数值越大文件大小越小。

ffmpeg -i video_input.mp4 -c:v libx264 -crf 28 video_output.mp4

在某些情况下,降低帧速率可能会起作用(尽管可能很容易使视频感觉迟钝),-r指定帧速率(在本例中为24,数值越低,文件大小越小,迟钝越大):

ffmpeg -i video_input.mp4 -r 24 video_output.mp4

你也可以尝试减小视频的大小(已经解释了如何做到这一点),另一个提示是压缩音频,使其立体声并降低比特率,例如:

ffmpeg -i video_input.mp4 -c:v libx264 -ac 2 -c:a aac -strict -2 -b:a 128k -crf 28 video_output.mp4

注意:-strict -2和-ac 2负责立体声部分

10、剪切音视频媒体文件

ffmpeg -i input_video.mp4 -t 5 output_video.mp4 							//将媒体文件从开始持续5s保存到输出
ffmpeg -i input_audio.wav -t 00:00:05 output_audio.wav						//将媒体文件从开始持续5s保存到输出
ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3						//将媒体文件从00:01:14到结束保存到输出
ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav 				//将媒体文件从00:01:30开始持续10s保存到输出
ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264 		//将媒体文件从00:01:30开始到00:01:40结束保存到输出
ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg							//将媒体文件从00:01:30到结束保存到输出

开始时间(-ss HH:MM:SS),
持续时间(-t duration)(秒),
结束时间(-to HH:MM:SS)
开始时间(-ss duration)(以秒为单位)

以上为基本用法,
FFmpeg高级用法
FFmpeg过滤器用法

猜你喜欢

转载自blog.csdn.net/weixin_43793181/article/details/114131859