在gpac中sample_delta值是通过什么函数写到MP4文件中的
时间: 2024-05-14 21:14:03 浏览: 186
在GPAC中,sample_delta值是通过以下函数写入MP4文件中的:
```c++
gf_isom_add_sample_delta(ms->tfra_box, ms->track->header->track_ID, delta);
```
其中,ms代表MediaStream结构体,tfra_box代表TrackFragmentRandomAccessBox结构体,track代表Track结构体,header代表TrackHeaderBox结构体,track_ID代表track的ID号,delta代表sample_delta值。这个函数会将sample_delta值添加到tfra_box中,以便后续的随机访问。
相关问题
gpac库中函数gf_isom_open调用报错[iso file] Found stts entry with sample_delta=0 - forbidden ! Fixing to 1
这个错误提示意味着在你的ISO文件中找到了一个sample_delta值为0的stts条目,这是不允许的。gpac库在打开文件时会检查这些条目,并且如果发现错误,会尝试修复它们。但是,在这种情况下,修复可能会导致其他问题,因此你需要手动修复ISO文件。
要修复ISO文件,请使用一个能够编辑二进制文件的文本编辑器,例如Hex Editor Neo或HxD。打开ISO文件,找到包含stts表的部分。你可以使用ISO文件格式的文档来确定stts表的位置。一旦找到了stts表,找到sample_delta值为0的条目,并将其更改为1。保存文件并重新运行你的代码。
请注意,如果在stts表之外还有其他损坏的表,这些表也需要修复。如果你不确定如何修复损坏的表,请考虑使用其他工具来修复ISO文件,例如ffmpeg或MP4Box。
使用gpac 解析MP4文件中SEI帧时报错 [iso file] Found stts entry with sample_delta=0 - forbidden ! Fixing to 1
这个错误意味着在MP4文件的stts表中,存在一个样本的时间间隔为0,这是不允许的。GPAC是一个严格的解析器,因此会报错并尝试修复它。
修复方法是将样本时间间隔改为1。您可以使用MP4Box工具中的“-inter”选项来修复这个问题。例如:
```bash
mp4box -inter 1 input.mp4 -out output.mp4
```
这将会将所有样本的时间间隔改为1,并生成一个修复后的MP4文件。然后您可以使用GPAC再次尝试解析该文件。
阅读全文