16

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

4

2 回答 2

15

假设您尝试将文本添加到实际的视频文件中,而不是简单地TextViewVideoView. 您提到您目前分别拥有时间和视频,因此我假设您正在尝试将文本添加到视频文件本身。

为了向视频添加文本,您需要在实际设备上重新编码视频。在 Android 上重新编码视频很棘手,主要是因为 Android 手机上的处理器不同,而且编码取决于处理器。有一个名为的开源 iOS 库GPUImage允许您执行此操作,但不幸的是,这在 Android 上不可用。

为 Android 编译 FFMPEG 已经付出了一些努力(理论上这将允许这种事情发生),但这涉及到对底层 C++ 代码的一些认真工作,而且我还没有找到任何可以在许多设备上简单地实现这一点的应用程序(查看此视频转换器,并注意如何为不同的手机下载不同的 编解码器)。对于一个特定的设备,您可能会有更多的运气,但如果您正在寻找跨多个设备的轻松分发,您可能很难做到这一点。

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

于 2013-02-05T19:18:26.833 回答
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()
 }
于 2021-02-17T12:57:29.100 回答