【问题标题】:How can we add animated/simple image as a top layer to video and export it as a single video in Android?我们如何将动画/简单图像作为顶层添加到视频中并将其导出为 Android 中的单个视频?
【发布时间】:2013-07-01 19:54:07
【问题描述】:

我需要将图像作为叠加层合并到视频中并将其导出。我找到了使用javacv 从图像创建视频的方法,但没有找到任何将图像添加为现有视频的覆盖的 jar 或库,一些链接建议使用 FFMPEG 和 JNI 来实现这一点,但遗憾的是我没有'对JNI一无所知。他们使用 IOS 中的 avfoundation 框架来实现相同的功能。

以上图片是我的要求的复制品,如果有人可以指导我正确的方向并为我提供一些有用的东西,将不胜感激。

到目前为止,我取得的成就是: 1) 编译的 FFMPEG。 2)生成的.so文件 3) 编译成功,可以运行 Hello Jni 项目。

我正在寻找的是: 1) 将视频分割成帧。 2) 将我的叠加图像与视频帧合并 3) 用音频重新创建视频。

我知道 JNI 是实现这一目标的唯一方法,因此进行了很多搜索,但没有找到任何好的 JNI 东西可以开始。我不是要完整的代码,但如果有人可以通过一些好的教程或博客指出我,那将是很大的帮助。

谢谢!!

【问题讨论】:

标签: android video java-native-interface


【解决方案1】:

实现这一点的方法就像你说的那样 - 合并一个视频编解码器并使用它来重新组合视频。

  1. 解码原始视频
  2. 在原始视频帧上绘制叠加层
  3. 重新编码帧。

将 FFMPEG 与 JNI 结合使用是显而易见的解决方案,但如果您发现任何其他编解码器库可以使用纯 Java 完成相同的操作,它也可以工作。

不了解 JNI?是时候学习它了=)

学习参考:

  1. 文件系统上的 NDK 文档:http://developer.android.com/tools/sdk/ndk/index.html#Docs

  2. JNI - http://192.9.162.55/docs/books/jni/html/jniTOC.html

  3. 适用于 Android 的 FFMPEG - 有许多教程和许多包含现成构建环境的源代码树。 你可以跟随他们,也可以自己做——前提是你了解 NDK 环境并且可以阅读 makefile。 这是一个例子:http://vec.io/posts/how-to-build-ffmpeg-with-android-ndk

  4. 使用 FFMpeg 编码\解码帧 - 遗憾的是,这里没有好的最新教程,有 API 文档:http://ffmpeg.org/doxygen/trunk/index.html

  5. 混合位图 - 使用 Android 的 Canvas 基础架构,或者只是手动将像素相互复制并根据 alpha 值进行混合。

警告 - 这是一个复杂的库构建,您最好在尝试此之前尝试更简单的 NDK 项目。

【讨论】:

  • 感谢SriKnigget,请指出一些您知道的教程或博客来实现您的建议,基本上是用于编码-解码视频的JNI。我已经编辑了我的问题,以澄清我在哪里需要你们的帮助。
猜你喜欢
  • 2019-07-30
  • 2018-04-14
  • 2015-09-07
  • 2020-03-24
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多