Как сохранить mp4 файл с использованием MediaMuxer

я пытаюсь получить mp4 файл. Я снимаю видео с помощью camera2 api и могу сохранить это как avc файл с помощью MediaCodec. Но я не понимаю как мне переделать этот код, для кодировния в mp4 файл с помощью MediaMuxer. Ранее использовал mediaRecorder, но на некоторых устройствах он работает некорректно. Не могу найти документации или понятного примера.

      private class EncoderCallback : MediaCodec.Callback() {

      override fun onInputBufferAvailable(codec: MediaCodec, index: Int) {
      }
      override fun onOutputBufferAvailable(
          codec: MediaCodec,
          index2: Int,
          info: MediaCodec.BufferInfo
      ) {
          outPutByteBuffer = mCodec!!.getOutputBuffer(index2)
          val outDate = ByteArray(info.size)
           outPutByteBuffer!![outDate]
          try {
              Log.i("EncoderCallBack", " outDate.length : " + outDate.size)

              outputStream!!.write(outDate, 0, outDate.size) 
          } catch (e: IOException) {
              e.printStackTrace()
          }
          mCodec!!.releaseOutputBuffer(index2, false)
      }

      override fun onError(codec: MediaCodec, e: MediaCodec.CodecException) {
          Log.i("EncoderCallBack", "Error: $e")
      }

      override fun onOutputFormatChanged(codec: MediaCodec, format: MediaFormat) {
          Log.i("EncoderCallBack", "encoder output format changed: $format")
      }

  }

Ответы (0 шт):