我做了一些功课:
似乎我应该使用类似这样的命令ffmpeg -i input.mp4 -vcodec libx264 -g 1 -r 25 output.mp4
,但这个命令不起作用:无法output.mp4
在任何 Flash 播放器中正确跳转到其他搜索点(提示点)。我的搜索结果显示视频可能没有编码足够/正确的关键帧,但-g 1
应该可以正常工作。input.mp4 由 XVidCap 直接制作。
答案1
Flash 媒体编码
Flash Media Encoding Server 中可用的控件比 Adobe Media Encoder 要多得多,但入门方式基本相同:选择容器格式和预设
Flash Media Server 和 Flash Player 几乎可以流式传输或播放任何格式的 H.264 文件,因此 F4V 或 MP4 容器都可以使用。如果您想要一个可以由 QuickTime Player 和 Flash Player 播放的文件,我会选择 MP4;否则,请使用 F4V。选择使用等于或高于目标分辨率的预设,以确保您使用正确的配置文件和级别。
图 13 显示了 Flash Media Encoding Server 中与 H.264 相关的参数。左侧是下图中所选预设的默认值。右侧是我将使用的值。大红色星号表示建议对预设值进行更改,这些更改都不是太大的变化。
我会将 GOP 大小扩展至 300,并使用自适应 B 帧放置,为编码器提供最大的灵活性。将参考帧的数量从 2 扩展到 4 可能会提高质量,但会稍微增加编码时间和解码复杂度,而禁用快速帧间和帧内决策可能会再次提高质量,但会增加一些编码时间。
总体而言,我推荐的值应该可以产生最佳质量,尽管编码时间有点太长。如果吞吐量至关重要,我会执行以下操作:
对于参考帧使用默认值 2
启用所有“快速”编码选项
使用 16 × 16 搜索形状
使用全像素进行运动估计子像素模式
启用两个或四个切片(假设您在多核系统上进行编码)
但是,如果采用这种方式,您应该将这些参数的输出与使用下图所示的推荐设置的输出进行比较,以查看更快的编码参数是否会产生明显的质量差异。
在音频方面,我将使用默认值,并仅更改目标比特率和通道以匹配我的目标。我还使用 Flash Media Encoding Server 提供的其他 H.264 编码参数(如时间戳和序列结束代码)的默认值。
就这样!去编码一些视频吧。
答案2
我使用以下 ffmpeg 命令来编码视频:
ffmpeg.exe
-i big_buck_bunny_trailer-1080p.ogg
-c:v libx264 -profile:v baseline -preset slow -b:v 800k
-c:a libvo_aacenc -b:a 128k
-s 512x288
-movflags faststart
big_buck_bunny_trailer-288p-faststart.mp4
编码后的视频似乎可以在 Flash 和 HTML5 播放器中正确加载。命令行取自本文。