【发布时间】:2013-10-14 13:48:27
【问题描述】:
我正在使用 Android 4.3 的新 MediaCodec 和 MediaMuxer API 实现有关 previewTexture 录制的Android Test Cases 之一。
通过将 recordingHint 设置为相机参数,我设法以大约 30fps 的帧速率记录预览流。
但是,我遇到了延迟/滞后问题,不知道如何解决。当使用相当标准的质量设置(1280x720,比特率约为 8.000.000)录制相机预览时,预览和编码材料偶尔会出现延迟。更具体地说:这种延迟大约每 2-3 秒发生一次,大约需要 300-600 毫秒。
通过跟踪延迟,我发现延迟来自“drainEncoder”方法中的以下代码行:
mMuxer.writeSampleData(mTrackIndex, encodedData, mBufferInfo);
如果编码器有可用于复用的数据,则循环调用此行。目前我不录制音频,所以只有 h264 流由 MediaMuxer 转换为 mp4 格式。
我不知道这是否与延迟有关,但它总是在循环需要两次迭代以使编码器的所有可用数据出列时发生(更具体地说,它总是发生在其中的第一个两次迭代)。在大多数情况下,一次迭代就足以使编码器出队。
由于没有太多关于这些新 API 的在线信息,非常感谢任何帮助!
【问题讨论】:
标签: android camera preview android-mediacodec