首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ffmpeg将视频转换为Gif android工作室

使用ffmpeg将视频转换为Gif android工作室
EN

Stack Overflow用户
提问于 2014-10-21 09:31:59
回答 2查看 6.8K关注 0票数 2

我目前正在制作一个简单的Androidapp,将SD卡上的视频转换为gif。

我知道ffmpeg是处理转换的最有效的方法。但我不知道如何将ffmeg添加到我的android工作室项目中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-23 14:23:19

对于JNI,NDK/您可以从开始。

然后检查用户(ph0b)所以发布关于JNI/NDK的文章

那么android上的ffmpeg是一个相当高的要求,你需要一些时间。

在github上搜索‘android’,寻找最高的社区评级(明星、克隆人),并提供良好的构建说明。

国际海事组织-“监护计划”和“半忍者”都很好。

您可以在android之外花费一些时间(只需在VM上构建ffmpeg静态库),因此您只熟悉ffmpeg上的配置/构建。

然后,进入完整的安卓工作室,使用ph0b集成技术运行NDK/ builds构建,在他的博客文章中使用对gradle的修改。

票数 1
EN

Stack Overflow用户

发布于 2017-04-03 02:18:30

在应用程序的build.gradle添加中

代码语言:javascript
复制
compile 'com.writingminds:FFmpegAndroid:0.3.2'

之后,添加一个按钮,用于选择视频路径,并在按钮的onClick方法中创建一个意图,帮助用户从手机中选择视频。

代码语言:javascript
复制
 Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("video/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Video"), PICK_CONTACT_REQUEST);

现在使用下面的方法返回上面的结果

代码语言:javascript
复制
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == PICK_CONTACT_REQUEST) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();

            // OI FILE Manager
            String filemanagerstring = selectedImageUri.getPath();


            // MEDIA GALLERY

            String selectedImagePath =getPath(selectedImageUri);
            if (selectedImagePath != null) {
                String[] cmd = {"-i"
                        , selectedImagePath
                        , "Image.gif"};
                conversion(cmd);

            }
        }
    }
}

定义getPath方法以获取所选视频的路径

代码语言:javascript
复制
 public String getPath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if (cursor != null) {
        // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
        // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } else
        return null;
}

然后创建一个将视频转换为gif的方法。

代码语言:javascript
复制
 public static void conversion(String[] cmd) {
    FFmpeg ffmpeg = FFmpeg.getInstance(this);

    try {


        // to execute "ffmpeg -version" command you just need to pass "-version"
        ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {

            @Override
            public void onStart() {
            }

            @Override
            public void onProgress(String message) {
            }

            @Override
            public void onFailure(String message) {
            }

            @Override
            public void onSuccess(String message) {
            }

            @Override
            public void onFinish() {
            }
        });
    } catch (FFmpegCommandAlreadyRunningException e) {
        // Handle if FFmpeg is already running
        e.printStackTrace();
    }
}

您可以参考https://github.com/WritingMinds/ffmpeg-android-java

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26483385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档