java - 按开始位置到结束位置将android中的视频切片

标签 java android

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

最佳答案

您必须使用 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 代码来加载库并声明 native 方法。

public class HelloJni
{
    public native String  stringFromJNI();

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

我找到了 this project on sourceforge它已经实现了一些 JNI 接口(interface)到 ffmpeg 以将其与 Java 媒体框架集成。您可能会发现它很有用。

还有另一种 Java FFI 技术称为 JNA(Java native 访问),它允许您在 Java 中声明 native 函数原型(prototype)并直接调用它们。使用它可能需要更少的样板代码。参见 this project对于 Android 实现。 (我自己没用过)

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

关于java - 按开始位置到结束位置将android中的视频切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15681290/

相关文章:

java - Eclipse IDE J2SE-1.5 中的新 Maven 项目问题

javascript - HTML anchor 标记无法在 Android 平台中下载文件

android - 为什么我得到的手机和 SD 卡内存信息不正确?

java - 如何在java中将FileInputStream转换为字符串?

java - 多个线程提交要按顺序完成的操作

java - 如何在Activity之间传递ObservableInt?

android - 如何从停止的值开始 Android 动画?

android - 如果已知顶点和边,如何在 android ArCore 中找到以平方米为单位的面积?

android - Calabash-Android - 未找到测试服务器且无法签署测试服务器

java - 从java中的字符串路径规范化斜杠