13

我没有视频帧ArrayList<Bitmap>。我已经使用MediaMetadataRetriever.getFrameAtTime()视频文件(.mp4)上的方法访问了这些帧。

我颠倒了 ArrayList 中帧的顺序。现在使用这个反向排序的帧队列我想渲染一个视频,所以它会被反转(我希望我在正确的轨道上)。

创建该视频后,我还想将其保存到 SD 卡。

如何做到这一点?或者还有其他方法可以在java中反转视频吗?

编辑1: (***使用xuggler*)**

我尝试使用 xuggler ...我尝试使用它的 .jar 文件。但它抛出了一些错误。

[2012-08-18 00:29:16 - xugglertest2] The library 'xuggle-xuggler-5.2.jar' contains native libraries that will not run on the device.
    [2012-08-18 00:29:16 - xugglertest2]  The following libraries were found:
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-ferry.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler-io.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle-xuggler.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/libxuggle.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-ferry.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-xuggler-io.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle-xuggler.so
    [2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/libxuggle.so

我应该怎么办 ??

我将 xuggler-xuggler-5.4.jar 复制到项目的 libs 文件夹中,然后将其添加到构建路径中。我做对了吗?



编辑 2:( 使用 ffmpeg)
我已经按照给定的在 ubuntu 平台上为 android 编译了 ffmpeg 在这里
我得到了按照文档编译的文件。
现在谁能告诉我如何在 android 应用程序中使用这些编译文件?我应该如何处理这些文件?
我没有找到任何合适的文档。任何帮助都是 gr8。


编辑 3:(移植到 android -ffmpeg)

嘿..最后我在ubuntu上编译了ffmpeg,我得到了libffmpeg.so。我成功地将它移植到android。libffmpeg.so 正在成功加载 android 活动。现在我只想测试一个简单的 ffmpeg 命令或程序。
你能建议我在哪里找它吗?你能建议我一个示例命令来测试它吗?

谢谢并恭祝安康

4

2 回答 2

11

您可以使用ffmpeg从图像中组装视频。您可以通过多种方式将 ffmpeg 集成到 Java(Android) 中(一种是直接通过

Runtime.getRuntime().exec("ffmpeg <options>");

),但通过Xuggler项目可能是一个好方法——它严重依赖 ffmpeg。作为起点,这里有一组介绍教程,这里有一个完整的教程如何从图像序列中编码视频。这需要大量的工作和阅读,但您需要的所有信息都在那里。祝你好运!

于 2012-08-15T09:31:30.690 回答
0

关于您的 xuggler 使用,您的库版本不适用于您的特定设备,因为它包含为 x86_64 和 i686 平台编译的本机代码:

[2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/i686-pc-linux-gnu/
[2012-08-18 00:29:16 - xugglertest2]  - com/xuggle/ferry/x86_64-pc-linux-gnu/

尝试使用为 ARMv6 编译的本机代码部分查找此库的版本(最常见的 Android 架构 - 包括较旧的设备,如果不想支持大约 1-2 年前的设备,ARMv7 会更好)。

否则,您需要为 ARM 编译 ffmpeg 并在 Android NDK 的支持下使用它。您需要用 C/C++ 编写代码,实现将您的一系列图像编码到特定文件中,并使用 JNI 接口将其包装起来。您可以将 Java 数组传递给类方法的本机实现。

请参阅 SDK 示例中的示例 Android NDK 应用程序以了解如何在您的代码中使用 JNI

于 2012-08-21T11:13:48.813 回答