Fragmented MP4: TrackFragHeader TFHD 必须有 TrackID,这在规范中吗?
Fragmented MP4: TrackFragHeader TFHD must have TrackID, is this in the spec?
我正在构建一个碎片化的 mp4 多路复用器,并注意到轨道 ID 在 TFHD 中重复。
如果视频没有这个未记录的曲目 ID,将无法播放。
这里有一个混合器添加它的例子:
https://github.com/edgeware/mp4ff/blob/bb9320744777dc97f18034c8aed45a9bcdbaa995/mp4/tfhd.go#L154
我依赖于微软提供的开放规范:
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-sstr/513ea48c-9a57-4792-a32a-fb6202ce2a58
这是对规范的补充吗?微软提供的规范有错吗?
这是强制性的。 reader 还怎么知道片段属于哪个轨道?
根据 ISO 14496 第 12 部分 (2015):
aligned(8) class TrackFragmentHeaderBox
extends FullBox(‘tfhd’, 0, tf_flags){
unsigned int(32) track_ID;
// all the following are optional fields
unsigned int(64) base_data_offset;
unsigned int(32) sample_description_index;
unsigned int(32) default_sample_duration;
unsigned int(32) default_sample_size;
unsigned int(32) default_sample_flags
}
我正在构建一个碎片化的 mp4 多路复用器,并注意到轨道 ID 在 TFHD 中重复。 如果视频没有这个未记录的曲目 ID,将无法播放。
这里有一个混合器添加它的例子: https://github.com/edgeware/mp4ff/blob/bb9320744777dc97f18034c8aed45a9bcdbaa995/mp4/tfhd.go#L154
我依赖于微软提供的开放规范: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-sstr/513ea48c-9a57-4792-a32a-fb6202ce2a58
这是对规范的补充吗?微软提供的规范有错吗?
这是强制性的。 reader 还怎么知道片段属于哪个轨道?
根据 ISO 14496 第 12 部分 (2015):
aligned(8) class TrackFragmentHeaderBox
extends FullBox(‘tfhd’, 0, tf_flags){
unsigned int(32) track_ID;
// all the following are optional fields
unsigned int(64) base_data_offset;
unsigned int(32) sample_description_index;
unsigned int(32) default_sample_duration;
unsigned int(32) default_sample_size;
unsigned int(32) default_sample_flags
}