mediacodec intra-refresh-period& i帧间隔

时间:2018-02-02 08:30:23

标签: android mediacodec

最近,我想在Android手机上进行低延迟视频通话,使用mediacodec类编解码器(例如video / avc)。

为了实现低延迟视频流,我想调用帧内刷新(IR)技术。当我使用参数配置h264编码器时,我发现我设置的参数不起作用。详情如下:

  1. i帧间隔 当我将此参数设置为0时,h264流的分析并非都是I帧。
  2. 帧内刷新周期
  3. 此参数在设置后无效,从比特流的结果可以看出,编码器没有实现帧内刷新。

    你能给我一些指导吗?我使用linphone-android,设备是三星s8(SM-G9500,Android 7.0,API 24),从mediacodec.xml文件中我们可以看到这个设备支持内部刷新,在此先感谢您的帮助!

    代码:

    AMediaFormat_setInt32(format, "i-frame-interval", 0);
    AMediaFormat_setInt32(format, "bitrate-mode", 1);
    AMediaFormat_setInt32(format, "profile", 1); // AVCProfileBaseline
    AMediaFormat_setInt32(format, "level", 1024); // AVCLevel32
    if(ms_get_android_sdk_version() >= 24)
            AMediaFormat_setInt32(format, "intra-refresh-period", 10);//7 0118
    

1 个答案:

答案 0 :(得分:1)

您需要为I_FRAME_INTERVAL使用负值。

见这里: https://developer.android.com/reference/android/media/MediaFormat.html#KEY_I_FRAME_INTERVAL

“OutputFormat”包含什么?