通过开始位置切换android中的视频到结束位置

时间:2013-03-28 12:02:40

标签: java android

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

2 个答案:

答案 0 :(得分:0)

您必须使用JNI约定编写一些C glue代码,以将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");
    }
}

我发现this project on sourceforge已经为ffmpeg实现了一些JNI接口,以便将它与Java Media Framework集成。您可能会发现它很有用。

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

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

答案 1 :(得分:-1)

没有办法通过包含的android api来做到这一点。您需要编写自己的逻辑来处理这个问题。大多数视频编辑应用程序使用ffmpeg来处理这个问题,您需要编写一些C代码并使用NDK来完成此任务。如果你搜索谷歌和堆栈溢出,你会发现许多问题和资源,以开始这个。如果您不熟悉NDK和/或ffmpeg,它看起来似乎势不可挡,但一旦开始,您应该能够完成您想要的任务。