【问题标题】:Android - Video encoding quality with MediaCodecAndroid - 使用 MediaCodec 的视频编码质量
【发布时间】:2016-06-02 06:22:30
【问题描述】:

我使用 Surface 并在其上绘制 openGL 图像(并旋转它们)。对于某些图像,当我使用 MediaCodec 对视频进行编码时,结果看起来像素化或压缩......

原始背景图片:

结果编码:

你可以看到左下角是像素化的。

这是我用来创建 MediaCodec 编码器的值:

    int width = 800;
    int height = 800;
    int bitRate = 10485760; // bps, = 10Mbps (1080p)
    bufferInfo = new MediaCodec.BufferInfo();
    MediaFormat format = MediaFormat.createVideoFormat(GLVideoEncoderImpl.MIME_TYPE, width, height);

    // Set some properties.  Failing to specify some of these can cause the MediaCodec
    // configure() call to throw an unhelpful exception.
    format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
            MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
    format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
    format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
    format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
    try {
        mediaCodec = MediaCodec.createEncoderByType(GLVideoEncoderImpl.MIME_TYPE);
    } catch (IOException e) {
        e.printStackTrace();
        UtilsAndroid.throwException("Impossible to create media codec");
    }

    mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

是否可以提高输出质量?提前致谢

【问题讨论】:

    标签: android opengl-es video-encoding


    【解决方案1】:

    对于某些图像,结果看起来像素化或压缩。

    嗯,这就是有损视频压缩的作用,尤其是当您查看视频帧的静止图像时(视频压缩很糟糕,并且感知错误依赖于它正在制作动画的事实,因此您看不到它)。

    要尝试的事情:

    • 以固定 FPS 提高比特率
    • 以固定比特率降低帧率,
    • 增加 I 帧的数量(这将减少错误传播伪影)
    • 减少 I 帧的数量(I 帧比 P 帧和 B 帧需要更多的比特来编码,所以大量的 I 帧意味着更差的压缩,这意味着在固定比特率下质量更差)。

    但是,请注意,大多数视频编码器都是为压缩现实世界的视频而设计的,并且在设计感知错误时也考虑到了这一点。大多数人在压缩简单的渐变填充、线条艺术等方面往往是垃圾,除非你以非常高的比特率运行它们。

    【讨论】:

    • 感谢您的回答。不幸的是,我多次更改参数。 (从 2Mbps 到 20 Mbps 的比特率),以及 0 个 i 帧到 200 个 i 帧(尝试了 1、2、3、5、10、20、100 等)。而且似乎没有什么好看的。遗憾的是,在 iOS 上,我可以在不更改任何参数的情况下获得完美的视频。这里我的 800x800 视频的持续时间为 16 秒,为 10Mo,i 帧间隔为 5。这是我能拥有的最好的质量,但仍然不是很好……
    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2020-03-21
    • 2023-04-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2014-07-21
    相关资源
    最近更新 更多