我正在使用MediaMuxer类编辑视频文件,以便使用ExoPlayer库进行播放。基本上我正在做的是从mp4解码视频帧解码这些帧,重新编码这些帧和使用多路复用
muxer.writeSampleData(..)
这一切都很好,我可以使用我的ExoPlayer实现成功播放视频,直到视频的持续时间> = 20秒。当我尝试使用至少20秒长的视频(.mp4)时,就会发生播放问题。对于MediaMuxer或ExoPlayer对象,日志或任何其他异常都不会引发任何错误。
播放问题很奇怪,但无论视频长度是多少= 20秒,都会以完全相同的方式发生。当播放达到11秒标记(视频11秒)时,帧冻结,ExoPlayer日志表明播放器的状态已从" Ready"到"缓冲"它无限期地保持在那个状态。不会记录任何其他错误或其他相关信息。
ExoPlayer日志在跟踪问题时没有任何帮助,因此我不确定问题出在哪里。在视频编辑代码中的某处,我提取帧,解码帧,编码帧和复用它们或在ExoPlayer库中? (无论长度如何,原始视频都能正常播放)我的ExoPlayer实现中卡在11秒标记处的视频在我的设备默认MediaPlayer上播放正常。
有没有人做过类似的经历?对于经验丰富的问题可能存在的问题有什么想法,或者对如何调试这个问题有任何进一步的想法?
答案 0 :(得分:0)
问题是解码器会在某些情况下写入大量样本,而我的exoplayer实现无法处理它,因为我设置的最大样本量太低。这是通过调整最大样本大小来解决的用于解码器或外层实现。