如何使用特定编解码器创建视频?

如何使用特定编解码器创建视频?

我目前正在测试一个带有 DASH 内容的视频播放器,我需要创建带有两个视频轨道的特定内容:一个带有参数@codecs = "avc1.4D4028",另一个带有值@codecs="avc1.4D401F"

搜索了一段时间后,我发现这些视频是 H.264 的main profile。我可以@codecs=avc1.4d481f使用以下命令创建内容:

ffmpeg -hide_banner -y -i $IN_VIDEO \
-c:v libx264 -profile:v main -level:v 3.1 $DIR/vid264.mp4


packager \
input=$DIR/vid264.mp4,stream=video,init_segment=$OUTDIR/vid-a-init.m4a,segment_template=$OUTDIR/vid-\$Number\$.m4a \
--generate_static_mpd \
--mpd_output $OUTDIR/manifest.mpd

任何关于这些价值观的解释都@codecs将不胜感激。

谢谢!

答案1

4D4028是 3 个 8 位整数。第一个是配置文件 66 = 基线,4d = 主要,64 为高。还有其他一些。

下一个字节是一系列约束标志。每个位都有不同的含义(有时取决于配置文件),用于启用/禁用编码器的某些功能。

最后一个字节是级别乘以 10,然后转换为十六进制。例如 3.1 = 1f。级别表示流的复杂程度(以每秒宏块数和最大比特率计算),完整表格如下维基百科

现在有个坏消息。您实际上不需要手动设置这些值。它们通常由编码器根据输入设置和您正在编码的视频自动计算。例如,级别是通过根据分辨率、帧速率和所需比特率自动计算的。您可以覆盖此值,但在 99% 的情况下这样做是不正确的。(选择的值太低会破坏很多解码器,太高,解码器可能会拒绝视频作为不受支持)

因此,如果您想强制使用该精确的编解码器字符串,则必须调整源视频的视频恢复/帧速率和编码器预设,以强制编码器使用您想要的值。

答案2

根据https://developers.google.com/cast/docs/media

MPEG-4 第 10 部分标准 H.264个人资料表示每个配置文件的功能。这些配置文件有多个级别其中,通常标记为 Baseline、Extended、Main 和 High。

基线用于便携式设备(手机)。
主要提供 SD 质量。
高提供 HD 质量。

每个命名级别内的级别号可为您提供更高的分辨率和帧速率。

特定配置文件、级别和级别编号中可用的多种不同编码方法会产生不同的结果;视频录制工程师在编码视频时可能会选择特定的组合以获得最佳效果。请记住,在视频中,就像在计算中一样,标准的奇妙之处在于我们有很多

相关内容