ffmpeg:多媒体处理利器及常用命令详解
HDUZN

FFmpeg 是一款功能强大的跨平台多媒体框架,可用于各种音视频处理任务。它提供一系列命令行工具,用于转换、编辑、合并、拆分、滤镜、流化等操作。FFmpeg 开源免费,支持多种操作系统,包括 Windows、Linux 和 macOS。

可以执行音频和视频多种格式的录影、转换、串流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

一、下载FFmpeg

1.下载FFmpeg

官网就可以下载 FFmpeg:(http://ffmpeg.org/download.html

Windows系统的话,选择【Windows EXE Files】->【Windows builds from gyan.dev】。

页面上的都可以下载,比如我这直接下载【release builds】中的 ffmpeg-release-essentials.7z,目前最新的版本。如下图所示:

2.添加到环境变量

下载后是个压缩包,直接解压出来。比如我这解压出来是个 ffmpeg-5.0.1-essentials_build 目录,然后直接把这个目录下的bin目录添加到系统环境变量就行。(怎么添加环境变量,百度一下就有)

因为bin目录下有 ffmpeg.exe 可执行程序,我们在命令行里用 ffmpeg命令时,用的就是这个。

二、常用命令

1.音/视频格式转换

1
2
3
4
5
# 视频格式转换
ffmpeg -i input_video.mp4 output_video.avi

# 音频格式转换(比特率192kbps)
ffmpeg -i input.wav -codec:a libmp3lame -b:a 192k output.mp3
1
2
3
4
5
命令详解:
-i input_video.mp4:指定输入视频文件。
output_video.avi:输出的视频文件。
-codec:a libmp3lame:指定使用libmp3lame编解码器进行MP3编码。
-b:a 192k:音频比特率192kbps。

2.从视频中提取音频

1
ffmpeg -i input_video.mp4 -vn -acodec libmp3lame output_audio.mp3
1
2
3
4
5
命令详解:
-i input.mp4:指定输入视频文件。
-vn:禁用视频流,只处理音频流。
-acodec libmp3lame:指定音频编解码器为LAME MP3。
output_audio.mp3:指定输出音频文件。

3.音/视频剪辑

1
2
3
4
5
# 视频剪辑(剪辑出从10秒到20秒视频)
ffmpeg -i input_video.mp4 -ss 00:00:10 -to 00:00:20 -c copy output_video.mp4

# 音频剪辑(剪辑出从1分30秒到1分45秒音频)
ffmpeg -i input_audio.mp3 -ss 00:01:30 -to 00:01:45 -c copy output_clip.mp3
1
2
3
4
命令详解:
-ss 00:01:30:指定剪辑的开始时间,这里是从1分30秒开始。
-to 00:01:45:指定剪辑的结束时间,这里是1分45秒。
-c copy:指定使用相同的音频编解码器和格式进行复制。

4.合并音视频

1
2
3
4
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac output.mp4

# 都不重新编码,速度快,但文件质量可能会略微下降
ffmpeg -i video.mp4 -i audio.mp3 -c copy output.mp4
1
2
3
4
5
6
7
8
9
10
11
12
13
命令详解:
-i video.mp4:输入视频文件
-i audio.mp3:输入音频文件
-c:v copy:`-c:v`指定视频编解码器,copy表示直接复制视频流不重新编码。
-c:a aac:`-c:a`指定音频编解码器,aac表示将音频重新编码为AAC格式。
output.mp4:输出的视频文件

还可以添加其它参数:
1.音频延迟0.5秒(-itsoffset 0.5)
ffmpeg -i video.mp4 -itsoffset 0.5 -i audio.mp3 -c:v copy -c:a aac output.mp4

2.音频音量减半(-filter_complex "[1:a]volume=0.5[a]")
ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "[1:a]volume=0.5[a]" -map 0:v -map "[a]" -c:v copy -c:a aac output.mp4

5.调整视频分辨率

1
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
1
2
命令详解:
-vf scale=1280:720:分辨率调整为1280x720。

6.为视频添加字幕

1
ffmpeg -i input.mp4 -vf subtitle=subtitle.srt output.mp4
1
2
命令详解:
-vf subtitle=subtitle.srt:添加 subtitle.srt 字幕。

7.下载m3u8格式的视频

1
2
3
4
5
# 1.直接下载(一般默认最清晰的版本)
ffmpeg -i m3u8地址 -c copy output.mp4

# 2.添加参数下载(确保音频格式符合 MP4 容器的要求,以避免兼容性问题。)
ffmpeg -i m3u8地址 -c copy -bsf:a aac_adtstoasc output.mp4
1
2
3
4
命令详解:
-i m3u8地址:要下载的m3u8地址。
-c copy:复制音视频流,不重新编码。
-bsf:a aac_adtstoasc:用于对音频流进行格式转换,将AAC ADTS格式转换为AAC ASC格式。AAC ADTS格式常用于HTTP流传输,而AAC ASC格式常用于MP4文件。

8.合并多个音/视频文件

音频与视频是一样的,以下用视频举例。

1
2
3
4
5
6
# 1.文件数量少,直接合并
ffmpeg -i "concat:part1.mp4|part2.mp4|part3.mp4" -c copy output1.mp4

# 2.文件较多时
# 需要创建一个filelist.txt文件,存放需要合并的视频文件名
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output2.mp4

filelist.txt 文件内容如下:

1
2
3
file 'F:\video\1.ts'
file 'F:\video\2.ts'
file 'F:\video\3.ts'
1
2
3
4
5
6
命令详解:
-f concat:指定用 concat 格式。
-safe 0:允许文件名包含不安全字符(如空格)。
-i filelist.txt:输入文件列表。
-c copy:直接复制视频和音频流,不重新编码。
output2.mp4:输出文件。

三、博客内其它相关文章

yt-dlp与you-get、youtube-dl 这两差不多,yt-dlp 能下载包括油管视频在内的不少视频了。都是一款采用Python 编写的免费、开源、命令行程序,主要是用来下载视频的。

  • 本文标题:ffmpeg:多媒体处理利器及常用命令详解
  • 本文作者:HDUZN
  • 创建时间:2024-06-23 20:14:17
  • 本文链接:http://hduzn.cn/2024/06/23/ffmpeg多媒体处理利器及常用命令详解/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论