如何在视频录制中添加文字?
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()
【讨论】:
以上是关于如何在视频录制中添加文字?的主要内容,如果未能解决你的问题,请参考以下文章