我搜索了很多但没有找到任何解决方案。我的问题是如何在录制时向视频添加文字,这样我们就可以在看到视频时获得相同的文字。当我看到捕捉视频时,我想要这样的东西。 目前我正在分时间和视频。所以问题是如何结合它。任何一种帮助将不胜感激。谢谢提前..
答案 0 :(得分:16)
这是一个非常难以解决的问题,通常使用android来假设您尝试将文本添加到实际视频文件中,而不是仅仅在TextView
上显示VideoView
。你提到你目前有时间和视频分开,所以我假设你正试图在视频文件中添加文字。
要向视频添加文字,您需要在实际设备上重新编码视频。在Android上重新编码视频非常棘手,主要是因为Android手机上的处理器不同,而且编码与处理器有关。有一个名为GPUImage
的开源iOS库允许您这样做,但遗憾的是,这在Android上不可用。
已经有一些努力来编译Android的FFMPEG(理论上会允许发生这种事情),但这涉及到底层C ++代码的一些认真工作,我还没有找到任何实现这一点的应用程序许多设备(check out this video converter,并注意了需要下载不同手机different codecs的方法。对于一个特定的设备,您可能会有更多的运气,但如果您希望在许多设备上轻松分发,那么您可能很难做到这一点。
目前,这个问题没有简单的解决办法。
答案 1 :(得分:0)
我使用 camera2 API。我创建了预览和 ImageReader。我从记录表面得到画布。每一帧都转换成位图放到画布上,然后绘制logo、文字等,
private val mOnImageAvailableListener = ImageReader.OnImageAvailableListener { reader ->
val image = reader.acquireNextImage() ?: return@OnImageAvailableListener
val bytes = image.toNV21()//image.convertYUV420888ToNV21()
val bitmap = Bitmap.createBitmap(image.width, image.height,
Bitmap.Config.ARGB_8888);
val bmData: Allocation = Converter.renderScriptNV21ToRGBA888(requireContext(),
image.width, image.height, bytes)
bmData.copyTo(bitmap)
val canvas = recorderSurface!!.lockCanvas(null)
canvas.drawBitmap(bitmap, 0f, 0f, Paint())
drawData(canvas)
recorderSurface!!.unlockCanvasAndPost(canvas)
bitmap.recycle()
image.close()
}