我一直在尝试更多地了解流式传输。所以请忍受我的无知:)
我有一个h.264流的mpeg-ts文件。我已经能够按照ISO 13818-1规范编写一个小程序(用Java)来提取PES数据包。从那里我可以轻松地提取PES包数据。
所以我的理解是h.264是mp4,但我想它并不像将所有PES数据包链接到一个名为* .mp4的文件来创建一个有效的mp4文件那么容易。
我现在还不清楚PES数据包实际上是什么。
但基本上,我试图了解该算法基本上是什么样的方法来将我拥有的数据重新转换为mp4文件。
答案 0 :(得分:2)
H.264是视频压缩标准,而MP4是容器文件格式。
打包基本流(PES)封装基本流(ES),在您的情况下是H.264比特流。有多种方法可以格式化H.264比特流。
由于您输入的是MPEG-2传输流,因此它使用附件B格式。这意味着比特流由一系列以起始码为前缀的网络抽象层单元(NALU)组成。
MP4格式使用不同的格式,其中每个NALU都以包含其长度的字段为前缀。
您需要将比特流转换为正确的格式并将其复制到新容器中。请查看this answer并找到MP4标准以获取更多信息。