代码之家  ›  专栏  ›  技术社区  ›  FFMPEG ANDROID

如何使用mediaMuxer在后台线程中录制视图

  •  0
  • FFMPEG ANDROID  · 技术社区  · 3 年前

    我正在使用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()
      }
    
    0 回复  |  直到 3 年前