跳转到内容

FFMPEG 中级指南/MPEG

来自维基教科书,开放的书籍,开放的世界

FFMPEG:编码,解码
全称:Moving Picture Experts Group
网站:运动图像专家主页
描述:MPEG 是最标准和最广泛使用的格式之一。它以多种不同的迭代形式出现,并在整个电影行业中使用,从捕捉、存储到交付。

运动图像专家组是电影行业中定义和实施视频标准的首要团体。自 1988 年以来一直在运营,塑造了整个行业的发展。

MPEG 可用于所有级别的使用,但了解不同的格式如何工作将有助于您决定哪种格式最适合您的需求。请通读用途部分以帮助您决定哪些是适合您用途的最佳设置。

运动图像专家组的基本前提是,编码由一些强大的机器完成,解码将由许多较弱的系统完成。因此,根据您使用的设置,编码可能会很耗处理器,但解码应该相当轻量级。

FFMPEG 指南

[编辑 | 编辑源代码]

MPEG1 是一种低比特率格式,设计用于在 CD 上以小于 1.5 Mb/s 的速率运行。与 MPEG2 相比,MPEG1 在较低的比特率下通常会胜过 MPEG2,尽管 MPEG4 应该会胜过 MPEG1。

虽然有一个解码器,但没有用于 MPEG 1 音频的音频编码器。对于音频,只需使用 MPEG 2 (mp2) 音频,因为它将与大多数高端编码器配合使用。


对于单遍 mpeg1

ffmpeg -i "input_file" -vcodec mpeg1video -acodec mp2 "output_file.mpeg"


对于两遍 mpeg1 编码

ffmpeg -i "input_video" -pass 1 -f mpeg1video -an -passlogfile log_file "output_file.mpeg"
ffmpeg -i "input_video" -pass 2 -f mpeg1video -acodec mp2 -passlogfile log_file "output_file.mpeg"


对于优化的两遍 mpeg1 编码

ffmpeg -i "input_video" -pass 1 -f mpeg1video -b 750000 -s 320x240 -an -passlogfile log_file "output_file.mpeg"
ffmpeg -i "input_video" -pass 2 -f mpeg1video -b 750000 -s 320x240 -acodec mp2 -ab 128000 -passlogfile log_file "output_file.mpeg"

SD 正常质量

ffmpeg -i "input_video" -c:v mpeg2video -b:v 4M -refs 1 -bf 0 -c:a ac3 -b:a 192k -async 1 "output.mpg"


SD 高质量

ffmpeg -i "input_video" -c:v mpeg2video -b:v 8M -refs 1 -bf 0 -c:a ac3 -b:a 384k -async 1 "output.mpg"

SD 流

ffmpeg -i "input_video" -c:v mpeg2video -b:v 8M -refs 1 -bf 0 -c:a ac3 -b:a 192k -async 1 "output.ts"

HD 流

ffmpeg -i "input_video" -c:v mpeg2video -b:v 20M -refs 1 -bf 0 -c:a ac3 -b:a 384k -async 1 "output.ts"
  1. ffmpeg -i source.avi -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320×240 destination.mp4
  1. ffmpeg -v 0 -i in.flv -y -acodec libfaac -ar 22050 -ab 64k -r 25 -vb 384000 -f mp4 -vcodec mpeg4 out.mp4
  1. ffmpeg -i source.mp4 -s 176×144 -vcodec h263 -r 25 -b 12200 -ab 12200 -ac 1 -ar 8000 destination.3gp

SD MPEG4 第 2 部分

[编辑 | 编辑源代码]

ffmpeg -i "input_video" -c:v mpeg4 -q:v 3 -c:a mp3 -ab 128k -async 1 "output.mp4"

ffmpeg -i "input_video" -c:v mpeg4 -b:v 2000k -c:a mp3 -ab 128k -async 1 "output.mp4"

SD MPEG4 XviD/DivX

[编辑 | 编辑源代码]

ffmpeg -i "input_video" -c:v libxvid -q:v 3 -c:a mp3 -ab 128k -async 1 "output.mp4"

ffmpeg -i "input_video" -c:v libxvid -b:v 2000k -c:a mp3 -ab 128k -async 1 "output.mp4"

SD 基于质量的 H264

[编辑 | 编辑源代码]

ffmpeg -i "input_video" -c:v h264 -crf 18 -preset slow -profile high -strict -1 -async 1 "output.mp4"

SD 固定比特率 H264

[编辑 | 编辑源代码]

ffmpeg -i "input_video" -c:v h264 -b:v 2000k -preset slow -profile high -strict -1 -async 1 "output.mp4"

FFMPEG 主页上提供了其他示例以及不同参数和编解码器的详细信息。

通用交付

[编辑 | 编辑源代码]

常见文件类型:.mpg、.mp4、.ts、.mkv

VCD 和 SVCD

DVD-Video 是最常用的素材最终交付格式。本节仅讨论标准 DVD-Video 作为交付格式。

一些有用的信息需要了解。DVD 解码器倾向于工作在约 8 Mb/s 的最大值和 1.5 Mb/s 的最小值之间(假设 MPEG2,MPEG1 可以更小,但我们建议您不要使用它)。固定比特率编码速度更快,但可变比特率会提供更好的尺寸和可能的质量。请参阅有关可变比特率的部分。

对于较旧的 DVD 播放器,您不应超过 6 Mb/s,尽管经验法则是,除非特别要求,否则 8 Mb/s 应该可以在 90% 的情况下正常工作,并为您的奶奶买一个新的 DVD 播放器。

固定比特率 DVD

[编辑 | 编辑源代码]

最佳质量:8 Mb/s,55 分钟视频

  • 1 小时:7350 Kb/s
  • 2 小时:4550 Kb/s

(这些是指导原则,您可能需要根据素材的长度进行调整。)

您应该避免低于 4500 kb/s,因为质量会变得很糟糕。

  • 最高质量:8 Mb/s
  • 中等质量:5 Mb/s – 7 Mb/s
  • 最低质量:5 Mb/s
  • 较差质量:4 Mb/s

最终编码的内容必须适合 4.7 GB 单面 DVD 或 8.4 GB 双面 DVD。

可变比特率 DVD

[编辑 | 编辑源代码]

蓝光和 HDDVD

[编辑 | 编辑源代码]

25Mb/s - 60Mb/s

15Mb/s

长期高质量存储

[编辑 | 编辑源代码]

50 - 880Mb/s

流媒体

[编辑 | 编辑源代码]

很难提供示例表格,因为许多来源根据视频分辨率和服务器带宽来改变其比特率和质量。

隔行扫描素材

[编辑 | 编辑源代码]

要将视频去隔行并将其转换为逐行扫描,请添加 -deinterlace 选项(如果您知道它是隔行扫描的)。否则,为了安全起见,请使用 -vf yadif 选项。

还要注意,从隔行扫描转换为逐行扫描会对您的视频内容造成破坏,并且可能会在转换过程中导致质量损失或引入其他伪影。

[编辑 | 编辑源代码]
华夏公益教科书