1

我正在使用 MediaMuxer 类来编辑视频文件以使用 ExoPlayer 库进行播放。基本上我正在做的是从解码这些帧的mp4中提取视频帧,重新编码这些帧并使用 muxer.writeSampleData(..)

这一切都很好,在我的 ExoPlayer 实现完成后,我可以成功播放视频,直到视频的持续时间 >= 20 秒。当我尝试使用至少 20 秒长的视频 (.mp4) 时,就会出现播放问题。对于 MediaMuxer 或 ExoPlayer 对象,日志中没有抛出任何错误或任何其他异常。

播放问题很奇怪,但无论视频长度 >= 20 秒如何,都会以完全相同的方式发生。当播放达到 11 秒标记(进入视频 11 秒)时,帧冻结,ExoPlayer 日志表明播放器的状态已从“就绪”变为“缓冲”,并且无限期地保持在该状态。不会记录其他错误或其他相关信息。

ExoPlayer 日志打印对追踪问题没有任何帮助,因此我不确定问题出在哪里。在我提取帧、解码帧、编码帧并混合它们的视频编辑代码中的某个地方,还是在 ExoPlayer 库中?(无论长度如何,原始视频都可以正常播放)在我的 ExoPlayer 实现中卡在 11 秒标记的视频在我的设备默认 MediaPlayer 上可以正常播放。

有没有人做过类似的事情的经验?对遇到的问题可能出在哪里有任何想法,或者对如何调试有任何进一步的想法?

4

1 回答 1

0

问题是解码器在某些情况下会写入大量样本,而我的 exoplayer 实现无法处理它,因为我设置的最大样本大小太低。通过调整解码器的最大样本大小来解决这个问题或 exoplayer 实现。

于 2016-01-14T15:41:24.993 回答