FFmpeg常用视频编码命令教程[支持手机和电脑 编辑媒体]

介绍:
  FFmpeg 编码命令常用例子, 由wuzhij整理分享, 让制作视频时更方便快速。尤其是在手机上处理视频编码更全面, 欢迎大家进群补充建议。

📢 常用命令:
✓ 1. H264视频压制参数
✓ 2. 格式转换
✓ 3. 视频音频封装MKV
✓ 4. 提取视频中的音频(音轨)文件
✓ 5. 视频中字幕提取
✓ 6. 批量合并视频

1. H264视频压制参数:

-c:v libx264 -b:v 3412k -q:v 5 -c:a ac3 -b:a 192k -ar 48000 -ac 2 -profile:v high -level 5

完整命令:
ffmpeg -hwaccel auto -y -r 23.976 -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mp4" -c:v libx264 -b:v 3412k -q:v 5 -c:a ac3 -b:a 192k -ar 48000 -ac 2 -profile:v high -level 5 "/storage/emulated/0/Download/New Folder/sample2.mp4"

具体解释如下:
- `-hwaccel auto`: 这个选项让FFmpeg自动选择硬件加速方法(如果可用)。
- `-y`: 覆盖输出文件而不询问。
- `-r 23.976`: 设置输入视频的帧率为23.976帧每秒,这是电影常用的帧率。
- `-i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mp4"`: 指定输入文件的路径。
- `-c:v libx264`: 使用libx264编码器对视频进行编码。
- `-b:v 3412k`: 设置视频比特率为3412 kbps。
- `-q:v 5`: 设置视频质量等级为5(较高质量,较低的压缩比)。
- `-c:a ac3`: 使用AC3编码器对音频进行编码。
- `-b:a 192k`: 设置音频比特率为192 kbps。好一点修改成640 kbps
- `-ar 48000`: 设置音频采样率为48000 Hz。
- `-ac 2`: 设置音频通道数为2(立体声)。
- `-profile:v high`: 设置视频编码的格式配置为High,这是H.264标准中的一种高级别配置。
- `-level 5`: 设置视频编码的格式标准为5,这是H.264标准中的高级别,意味着更高的压缩效率和兼容性,但也需要更强的处理能力。
- ` "/storage/emulated/0/Download/New Folder/sample2.mp4"`: 输出的文件路径和文件

2. 格式转换 mkv和mp4:

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mp4" -c:v copy -c:a copy -f matroska "/storage/emulated/0/Download/New Folder/sample.mkv"

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mkv" -c:v copy -c:a copy -f mp4 "/storage/emulated/0/Download/New Folder/sample.mp4"

具体解释如下:
- `-c:v copy`:指示FFmpeg复制(即不重新编码)视频流。这意味着视频流将以原始格式直接封装到输出文件中,不会进行任何压缩或质量变化。
- `-c:a copy`:类似于视频流,这个参数告诉FFmpeg复制音频流。同样,音频数据将保持原样,不会被重新编码或压缩。
- `-f mkv`:指定输出文件的容器格式为Matroska(MKV)。MKV是一种开放标准的多媒体容器格式,它能够容纳多种类型的视频、音频、图片和字幕轨道。

3. 视频音频合并:

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Download/视频.mp4" -y -i "/storage/emulated/0/Download/音频.mp3" -c:v copy -c:a copy -map 0:v -map 1:a -f mp4 "/storage/emulated/0/Download/输出视频.mp4"

具体解释如下:
- `-y`:这个选项告诉FFmpeg在输出文件已存在时覆盖它。这可以防止由于文件已经存在而导致的错误。
- `-i "/storage/emulated/0/Download/视频.mp4"`:指定第一个输入文件的路径。`-i`后面跟着的是输入文件的路径。
- `-i "/storage/emulated/0/Download/音频.mp3"`:指定第二个输入文件的路径。
- `-c:v copy`:这个参数告诉FFmpeg复制(不重新编码)视频流。这意味着视频流将保持不变,不会损失质量。
- `-map 0:v`:这个参数告诉FFmpeg从第一个输入文件(索引为0)中映射(即包含)视频流到输出文件。
- `-map 1:a`:这个参数告诉FFmpeg从第二个输入文件(索引为1)中映射音频流到输出文件, 自动覆盖原音频。
- `-f mp4`:指定输出文件的容器格式为MP4。

4. 提取视频中的音频文件:

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mp4" -vn -acodec copy "/storage/emulated/0/Download/sample.aac"

多音频时
ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mkv" -map 0:a -c copy "/storage/emulated/0/Download/sample_audio1.aac"

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Android/data/com.silentlexx.ffmpeggui/files/sample.mkv" -map 0:a:1 -c copy "/storage/emulated/0/Download/sample_audio2.aac"

具体解释如下:
- `-i input_video.mp4`:指定输入视频文件的路径和名称。
- `-vn`:这个选项告诉FFmpeg不要处理视频流,只处理音频流。
- `-acodec copy`:这个选项告诉FFmpeg直接复制原始音频流,不进行重新编码。
- `-map`参数来指定要提取的音频流。第一个命令提取第一个音频流(`-map 0:a`),第二个命令提取第二个音频流(`-map 0:a:1`)

5. 视频字幕提取命令:

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Download/05.mkv" -map 0:s:0 "/storage/emulated/0/Download/英文.srt"

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Download/05.mkv" -map 0:s:0 "/storage/emulated/0/Download/简体.ass"

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Download/05.mkv" -map 0:s:1 "/storage/emulated/0/Download/繁体.ass"

提示: 这个命令中的`-map 0:s:0`表示从输入文件的第一个流中提取字幕流。如果需要提取其他流中的相同类型字幕,请相应地更改该参数。 0:s:1 往后排序

6. 合并视频的常用命令:

ffmpeg -hwaccel auto -y -i "/storage/emulated/0/Download/play.m3u8" -c copy "/storage/emulated/0/Download/play.mp4"

如果你有多个mp4文件需要合并成一个,你可以使用FFmpeg工具来完成这个任务。以下是合并多个mp4文件的命令:

第一种方式:
ffmpeg -hwaccel auto -y -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4

ffmpeg -hwaccel auto -y -i "concat:/storage/emulated/0/Download/input1.mp4|/storage/emulated/0/Download/input2.mp4|/storage/emulated/0/Download/input3.mp4" -c copy "/storage/emulated/0/Download/output.mp4"

第二种方式:
1. 创建一个文本文件,例如命名为`filelist.txt`,在文件中按顺序列出所有要合并的mp4文件的路径,每个路径占一行。不要中文, 例如:

file 'D:\Download\input1.mp4'
file 'D:\Download\input2.mp4'
file 'D:\Download\input3.mp4'
...
file 'inputN.mp4'

命令
ffmpeg -hwaccel auto -f concat -safe 0 -i "D:\Download\filelist.txt" -c copy "D:\Download\output.mp4"

具体解释如下:
2. `-hwaccel auto`: 这个选项启用硬件加速。`auto`表示让FFmpeg自动选择最佳的硬件加速方式。
3. `-f concat`: 这个选项指定了输入文件的格式为`concat`,即连接。这意味着FFmpeg将从`filelist.txt`文件中读取输入文件列表,并将它们连接在一起。
4. `-safe 0`: 这个选项禁用了安全检查,允许使用非常规字符。这对于包含特殊字符的文件名是必需的。
5. `-i filelist.txt`: 这个选项指定了输入文件列表的路径。在这个例子中,输入文件列表是一个名为`filelist.txt`的文本文件。
6. `-c copy`: 这个选项指示FFmpeg复制输入流,而不进行重新编码。这意味着输出文件将与输入文件具有相同的编码和质量。
7. `output.mp4`: 这是输出文件的名称。在这个例子中,输出文件将被命名为`output.mp4`。

 收藏 (0) 充电捐赠

PayPal:[email protected]

支付宝捐赠

微信捐赠

未经允许不得转载,如转载请注明文章出处by-wuzhij:无止境|官方网站 » FFmpeg常用视频编码命令教程[支持手机和电脑 编辑媒体]

分享到: 生成海报
无止境QQ群:303093669

telegram :Telegram







开始评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)