这两个 VLC 编解码器标识符有什么区别?

这两个 VLC 编解码器标识符有什么区别?

我使用以下命令将.ts文件转换为:.mp4

ffmpeg -i hls-360p.ts -codec copy -bsf:a aac_adtstoasc hls-360p.mp4

尽管不打算重新编码,但 VLC 指出了略有不同的视频编解码器字符串:

  • 输入.ts文件:H264 - MPEG-4 AVC (part 10)(h264)
  • 输出.mp4文件:H264 - MPEG-4 AVC (part 10)(avc1)

有什么不同?


输入文件截图:

输入文件截图


输出文件截图:

输出文件截图

答案1

H.264 视频类型

avc1表示没有起始码的 H.264 比特流

MP4 容器格式存储没有起始码的 H.264 数据。相反,每个 NALU 都以长度字段为前缀,该字段给出了 NALU 的长度(以字节为单位)。长度字段的大小可能有所不同,但通常为 1、2 或 4 个字节。

h264指示带有起始码的H.264比特流。

通过无线方式传输的、包含在 MPEG-2 程序或传输流中或录制在 HD-DVD 上的 H.264 比特流的格式按照 ITU-T Rec. H.264 附件 B 中的描述进行格式化。根据此规范,比特流由一系列网络抽象层单元 (NALU) 组成,每个单元都以起始码为前缀,起始码等于 0x000001 或 0x00000001。

答案2

补充一下@Gyan 的回答,长度字段的大小称为 NALULengthSizeMinusOne,存在于 avc1 框的 avCc 部分。这个答案:关联显示出它们之间的明显差异。

相关内容