Android AudioCodec PresentationTimeUs始终为零

时间:2019-05-06 14:03:56

标签: android-mediarecorder

我正在尝试实现从Android应用到RTMP目标的视频流。我有两个不同的安装线程,可以输出视频和音频数据。我正在创建“表面” using MediaCodec.createInputSurface,以创建视频帧。我将此表面添加为Camera2的输入。

    val format = MediaFormat.createVideoFormat(MIMETYPE_VIDEO_AVC, width, height)
    format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
            MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface)
    format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate)
    format.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate)
    format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, IFRAME_INTERVAL)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        format.setInteger(MediaFormat.KEY_ROTATION, rotation)
    }

    androidMediaCodec = MediaCodec.createEncoderByType(MIMETYPE_VIDEO_AVC)
    androidMediaCodec!!.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
    videoSurface = androidMediaCodec?.createInputSurface()

现在的问题是创建AudioEncoder时是否需要做同样的事情?即创建一个曲面并将其添加为camera2的输入? 我问这个问题的原因是,我收到的所有音频缓冲区的presentationTimeUs都为零。

0 个答案:

没有答案