首页 > 解决方案 > 如何使用 mediaMuxer 在后台线程中记录视图

问题描述

我正在使用 MediaMuxer 将视图录制为 MP4 视频文件。我成功地实现了这个https://github.com/rogererill/LottieRecorderTest。但在那之后,当我实现 UI/UX 时,我将进度加载视图设置为动画。但它卡住了,直到这个视频编码器处理完成。

我也尝试使用 thread() 但应用程序崩溃而没有任何错误。你们能帮我吗?

下面的代码段我在应用程序中遇到错误:

  fun start() {

      object : Thread() {
          override fun run() {
              super.run()

              while (isRecording()) {
                  recorder.nextFrame(frameCreator.generateFrame())
              }
              recorder.end()
              listener()
             
             

          }
      }.start()


  }

  fun nextFrame(currentFrame: Drawable) {
    drainEncoder(false)
    val canvas = inputSurface.lockCanvas(null)
    try {
      canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)  // Here you need to set some kind of background. Could be any color
      currentFrame.draw(canvas)
    } finally {
      inputSurface.unlockCanvasAndPost(canvas)
    }
  }

  fun end() {
    drainEncoder(true)
    close()
  }

标签: androidvideoencodemediamuxer

解决方案


推荐阅读