android中的视频镜像



最近,我正在使用camerax录制视频,只有前置摄像头。但是我遇到了一个问题,视频在保存后被镜像。

目前,我正在使用一个库(Mp4Composer-android)来镜像录制后的视频,这需要一个处理时间。所以,我注意到Snapchat和Instagram我们给出的输出没有经过处理。

在这之后,我还注意到我们的原生相机应用程序正在提供一个选项来选择是否要镜像视频。

我添加到camerax的配置,

videoCapture = VideoCapture
.Builder()
.apply {
setBitRate(2000000)
setVideoFrameRate(24)
}
.build()

如何使我的相机不镜像视频?

临时解决方案:

我使用这个库作为临时解决方案。这个库的问题是,我必须在录制视频后处理视频,这需要相当长的时间。我使用了以下代码:

添加到gradle:

//Video Composer
implementation 'com.github.MasayukiSuda:Mp4Composer-android:v0.4.1'

翻转代码:

Mp4Composer(videoPath, video)
.flipHorizontal(true)
.listener(
object : Mp4Composer.Listener {
override fun onProgress(progress: Double) { }
override fun onCurrentWrittenVideoTime(timeUs: Long) { }
override fun onCompleted() { }
override fun onCanceled() { }
override fun onFailed(exception: Exception?) { }
}
)
.start()

注意:这也会压缩你的视频。查看库文档了解更多细节

一个长期从事基于视频的NDK的高级开发人员给我的答案:

想象一下通过专用高速公路的摄像机发出的帧。有一种方法,我们可以捕捉所有通过高速公路的帧。

  1. 捕获通过高速公路的帧

  2. 翻转每一帧的像素

  3. 通过同一高速公路发送帧

他没有说明如何捕获和释放帧。

为什么我没有使用这个解决方案(问题):

如果我们必须实时执行这个动作,我们必须高效率地完成它。根据相机的质量,我们必须捕捉从每秒24帧到120帧的任何地方,并处理和发送帧。

如果我们需要这样做,我们需要NDK开发人员和大量的工程,大多数初创公司负担不起。

相关内容

  • 没有找到相关文章

最新更新