使用gpac库报错[iso file] more than one stts entry at the end of the track with sample_delta=0 - forbidden ! Fixing to 1
时间: 2024-05-30 16:16:30 浏览: 147
这个错误是由于输入的ISO文件中有一个或多个轨道的样本间隔为0,而这是不被允许的。解决方法是在代码中设置一个样本间隔为1的默认值。具体来说,您可以使用以下命令:
MP4Box -add inputfile.iso -new outputfile.mp4 -set-stts 1
这将使用MP4Box工具将ISO文件转换为MP4格式,并将样本间隔设置为1。
如果您正在使用GPAC库开发自己的应用程序,则可以通过设置MP4文件中每个轨道的默认样本间隔来解决此问题。例如,您可以使用以下代码片段:
MP4Track *track = MP4AddTrack(mp4file, ...);
MP4SetTimeScale(mp4file, track, 1000);
MP4SetTrackDuration(mp4file, track, duration * 1000);
MP4SetTrackFloatProperty(mp4file, track, "tkhd.width", width);
MP4SetTrackFloatProperty(mp4file, track, "tkhd.height", height);
MP4SetTrackIntegerProperty(mp4file, track, "mdia.minf.stbl.stsd.avcC.width", width);
MP4SetTrackIntegerProperty(mp4file, track, "mdia.minf.stbl.stsd.avcC.height", height);
MP4SetTrackIntegerProperty(mp4file, track, "mdia.minf.stbl.stsd.avcC.avcProfileIndication", profile);
MP4SetTrackIntegerProperty(mp4file, track, "mdia.minf.stbl.stsd.avcC.avcLevelIndication", level);
MP4SetTrackIntegerProperty(mp4file, track, "mdia.minf.stbl.stsd.avcC.defaultSampleDuration", 1000);
在这个代码片段中,最后一行设置了默认样本间隔为1毫秒。您可以根据需要调整此值。
阅读全文