android - MediaCodec视频只解码帧率控制

时间:2017-12-02 02:38:18

标签: android android-mediacodec

请参阅this链接,我只在输出缓冲区可用时添加一个简单的延迟:                     ByteBuffer buffer = outputBuffers [outIndex];                     Log.v(“DecodeActivity”,“我们不能使用此缓冲区,但由于API限制而渲染它,”+缓冲区);

                // 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)。

1 个答案:

答案 0 :(得分:0)

刚刚发现由TextureView引起的问题,将TextureView更改为SurfaceView后,它现在工作正常。

但仍然不清楚为什么TextureView性能如此糟糕。