如何在视频录制中添加文字?

17

我搜索了很多但没有找到任何解决方案。我的问题是如何在录制视频时添加文本,以便我们在观看视频时可以获得相同的文本。当我看到捕获的视频时,我想要这样的效果。 输入图像描述 目前,我分别获取时间和视频。所以问题是如何将它们组合起来。任何形式的帮助都将不胜感激。先谢谢。


这不是Meetic... - m0skit0
可能是如何在Android中添加视频文本?的重复问题。 - Fattie
2个回答

15
这是一个相当困难的问题,如果你想要将文本添加到实际的视频文件中,而不仅仅是在VideoView上显示一个TextView。你提到你目前有时间和视频分开,因此我认为你正在尝试向视频文件本身添加文本。
为了向视频添加文本,您需要重新对实际设备上的视频进行编码。在Android上重新编码视频主要是由于不同处理器在Android手机上和编码是处理器相关的复杂。有一个名为GPUImage的开源iOS库可以让你做到这一点,但这很遗憾在Android上不可用。
有一些努力在为Android编译FFMPEG(理论上可以实现此类操作),但这涉及到底层C++代码的严格工作,我没有找到任何一个应用程序能够简单地在许多设备上实现这个功能(查看此视频转换器,并注意不同手机需要下载不同的 编解码器)。对于特定的某个设备,你可能会更幸运,但如果你想要在许多设备上轻松分发,你可能会遇到困难。

目前,这个问题没有简单的解决方案。


1
你好,你有解决这个问题的方案吗? - Mihir Shah
注意,感谢上帝,现在在Android开发中FFMPEG很容易获取。 - Fattie
你好,使用ffmpeg在Android应用程序中添加文本到视频录制中需要任何许可证吗? - kathiria hemendu

0

我使用camera2 API。我创建预览和ImageReader。我从录制表面获取画布。每个帧转换为位图并放置在画布上,然后绘制标志、文本等。

 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()
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接