4

嗨,我有一个 30 分钟的视频文件,但我想将视频00:09:2300:25:33. 当用户通过我的应用程序播放视频时,我想提取视频的一部分。在播放视频时,用户可以指定开始和结束持续时间来剪切视频。那么有什么方法可以根据持续时间剪切视频并保存到 SD 卡?

4

2 回答 2

0

您必须使用 JNI 约定编写一些 C 胶水代码,以将 FFmpeg 功能公开给 Java 代码。以下是 Android NDK 示例中用 C 语言实现的 JNI 方法示例:

jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

您还需要一些 Java 代码来加载库并声明本机方法。

public class HelloJni
{
    public native String  stringFromJNI();

     static {
        System.loadLibrary("hello-jni");
    }
}

在 sourceforge 上找到了这个项目,它已经为 ffmpeg 实现了一些 JNI 接口,以将其与 Java 媒体框架集成。您可能会发现它很有用。

还有另一种称为 JNA(Java Native Access)的 Java FFI 技术允许您在 Java 中声明本机函数原型并直接调用它们。使用它可能需要更少的样板代码。有关 Android 实现,请参阅此项目。(我自己没用过)

您将需要包含可以从 Java 调用的JNI包装器方法,这些方法将依次调用 FFmpeg 函数。

于 2013-04-04T04:37:46.093 回答
-1

没有办法通过包含的 android api 来做到这一点。您将需要编写自己的逻辑来处理此问题。大多数视频编辑应用程序使用ffmpeg来处理这个,你需要编写一些 C 代码并使用NDK来完成这个。如果你搜索谷歌和堆栈溢出,你会发现很多问题和资源来开始这个。如果您不熟悉 NDK 和/或 ffmpeg,它可能会让人不知所措,但一旦您开始,您应该能够完成您正在寻找的东西。

于 2013-04-01T04:25:34.280 回答