关于写fragmented的mp4在windows下播放的问题
来源:2-2 FFmpeg音视频处理流程讲解

斯蒂夫二狗
2022-11-14
老师您好!
我有一个个人实践的问题请教下,我写了一个程序支持将裸码流录制成mp4文件。视频编码是mpeg,音频是aac,工作在windows下。但是遇到了一个问题,当录制被进程异常退出(崩溃,杀进程),录制的文件在win media player上不能正常播放。我尝试将录制movflags加上了faststart参数将moov box前置,也不能解决问题。我尝试加上 frag_keyframe参数,异常退出后录制后的视频可以正常播放,但是进度条无法拖动,除了win media player其他播放器正常。查看mp4info,发现视频的totalsize和duration都不对。
我查看了ffmpeg的源码,发现frag模式的属性与faststart是冲突的。
我的问题是,有没有什么方法可以让fragmented方式的mp4能够在异常退出的时候保持moovbox中的信息更新,从而在media player上可以正常拖动和播放?或者有没有其他解决方案?跟我的编码方式(改成h264)是否有关?
不知道我有没有表达清楚,非常期望老师能帮助解答下?
感谢🙏
我有一个个人实践的问题请教下,我写了一个程序支持将裸码流录制成mp4文件。视频编码是mpeg,音频是aac,工作在windows下。但是遇到了一个问题,当录制被进程异常退出(崩溃,杀进程),录制的文件在win media player上不能正常播放。我尝试将录制movflags加上了faststart参数将moov box前置,也不能解决问题。我尝试加上 frag_keyframe参数,异常退出后录制后的视频可以正常播放,但是进度条无法拖动,除了win media player其他播放器正常。查看mp4info,发现视频的totalsize和duration都不对。
我查看了ffmpeg的源码,发现frag模式的属性与faststart是冲突的。
我的问题是,有没有什么方法可以让fragmented方式的mp4能够在异常退出的时候保持moovbox中的信息更新,从而在media player上可以正常拖动和播放?或者有没有其他解决方案?跟我的编码方式(改成h264)是否有关?
不知道我有没有表达清楚,非常期望老师能帮助解答下?
感谢🙏
写回答
1回答
-
首先,我觉得你应该重点解决的问题是不让你的录制程序发生crash, 提高程序自身的健壮性;第二, 找到 win media player不能seek 的真正原因,是都是由于duration ,total_size 值不对引起的?我从来不用win media player,所以没有可供参考的经验值;第三,如果是由于diration等参数的原因,你可以在录制程序中,每个一分钟记录一下时常,当发生crash时,自己将这些值修正过来;第四,如果不仅是这几个字段,还有其他mp4box 信息没写入引起的,那就没办法了,还是回到第一步,把你程序的健壮性搞上来,这才是关键!
012023-03-04
相似问题