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

Posted

技术标签:

【中文标题】如何在视频录制中添加文字?【英文标题】:How to add text on video recording? 【发布时间】:2013-01-17 14:24:27 【问题描述】:

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

【问题讨论】:

这不是会议... how to add text to the video in android?的可能重复 【参考方案1】:

这是一个非常难解决的问题,通常使用 android 来解决,假设您尝试将文本添加到实际的视频文件中,而不是简单地在 VideoView 上显示 TextView。您提到您目前有单独的时间和视频,所以我假设您正在尝试将文本添加到视频文件本身。

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

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

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

【讨论】:

您好,您对此有什么解决方案吗? 感谢上帝,现在 FFMPEG 在 Android 开发中很容易使用 您好需要任何许可证才能在 Android 应用程序中使用 ffmpeg 在视频录制中添加文本?​​【参考方案2】:

我使用 camera2 API。我创建预览和 ImageReader。我从记录表面得到画布。每一帧都转换成位图放到canvas上,然后画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()
 

【讨论】:

以上是关于如何在视频录制中添加文字?的主要内容,如果未能解决你的问题,请参考以下文章

使用增强现实录制视频的最佳方式是什么?

录制的视频主题音量能减吗

如何在 Android TV 中开始视频录制(开发)

如何将录制选项添加到我的视频会议应用程序

在 Android 上录制视频时添加叠加层

将 UIView 覆盖添加到 UIIMagePickerController 视频录制