【发布时间】:2017-12-02 12:34:55
【问题描述】:
参考this链接,我只是在输出缓冲区可用时添加一个简单的延迟: ByteBuffer 缓冲区 = outputBuffers[outIndex]; Log.v("DecodeActivity", "由于 API 限制,我们不能使用这个缓冲区但要渲染它," + buffer);
// We use a very simple clock to keep the video FPS, or the video
// playback will be too fast
while (info.presentationTimeUs / 1000 > System.currentTimeMillis() - startMs) {
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
break;
}
}
decoder.releaseOutputBuffer(outIndex, true);
但是当我只输入一个 25fps 的视频帧时,解码后的视频看起来只有 10fps(很多帧看起来像掉线了)。
但是如果我添加一个 frameconut 来检查 fps,它实际上是 25fps,如果添加 MediaMuxer 来复用输入缓冲区中的帧,它可以正常播放,这意味着实际上没有丢弃帧。
所以这就是为什么那里有名但没有显示在屏幕上的原因,但如果我消除延迟,播放将非常快(几乎 50fps)。
【问题讨论】:
标签: android android-mediacodec