【问题标题】:android - MediaCodec video only decoder framerate controlandroid - MediaCodec 仅视频解码器帧率控制
【发布时间】: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


    【解决方案1】:

    刚刚发现TextureView引起的问题,将TextureView改为SurfaceView后,现在可以正常使用了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多