android - 如何使用 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()
}
解决方案
推荐阅读
- java - 构造转换器失败:错误:无法解析 C:
- java - 将类的实例转换为服务(android/Java)时的问题
- ffmpeg - windows上的ffmpeg网络摄像头流到sdl
- c++ - if 条件可以是 for 循环吗?
- c - C如何在没有编译器警告的情况下将地址打印为十进制值(不是十六进制)
- rust - 为什么 Rust 认为我的私有类型必须是公共的,除非我使用 pub(crate)?
- processing - 如何在处理中用渐变填充矩形或椭圆?
- python - Pymongo 和 dash 简单的客户端认证项目
- swift - Swift Set Scrollview Subviews Frame Location based off content offset
- python - 将 int64 输入到 keras 并仅使用 int64 处理数据