我正在使用MediaMuxer类编辑一个视频文件,以便使用ExoPlayer库进行回放。基本上,我所做的是从mp4中提取视频帧,解码这些帧,重新编码这些帧,并使用muxer.writeSampleData(..)进行多路复用
这一切都很好,在我的ExoPlayer实现完成之后,我可以成功地播放视频,直到视频的持续时间为>= 20秒。当我尝试使用至少20秒长的视频(.mp4)时,就会出现播放问题。对于MediaMuxer或ExoPlayer对象,日志中不会抛出任何错误或任何其他异常。
播放的问题很奇怪,但无论视频长度>=为20秒,都会以完全相同的方式发生。当回放达到11秒标记(视频进入11秒)时,帧冻结,ExoPlayer日志指示播放器的状态已从“就绪”变为“缓冲”,并无限期地保持该状态。不会记录任何其他错误或其他相关信息。
ExoPlayer日志对跟踪问题没有任何帮助,因此我不确定问题出在哪里。在视频编辑代码中提取帧、解码帧、编码帧并对其进行多路复用的某个地方,还是在ExoPlayer库中?(原始视频无论长度如何都可以正常播放)在我的设备默认MediaPlayer上,在我的ExoPlayer实现中卡在11秒标记上的视频可以正常播放。
有没有做类似事情的经验?对于遇到的问题,您有什么想法吗?或者对如何调试有任何进一步的想法?
发布于 2016-01-14 23:41:25
问题是解码器在某些情况下会写入大量样本,我的exoplayer实现无法处理它,因为我设置的最大样本大小太大了,通过调整解码器或exoplayer实现的最大样本大小,low.This是固定的。
https://stackoverflow.com/questions/34752202
复制相似问题