FFmpeg的使用

大家好,我们又见面了,今天已经连续写了两篇文章了,最近公司项目上线了,所以比较轻松,今天跟大家分享一下如何使用FFmpeg。废话就不多说,我们直接进入正文。

如果你是直接阅读现在的文章,最好先去阅读AndroidStudio中配置FFmpegAndroid中使用FFmpeg这两篇文章再来阅读(FFmpeg的使用)你会比较容易理解。

  1. 在第一篇文章的时候我们封装了FFmpeg的代码给android调用。代码如下:
public class FFmpegRun {
    static {
        System.loadLibrary("ffmpeg");
        System.loadLibrary("ffmpeginvoke");
    }

    public static void execute(String[] commands, final FFmpegRunListener fFmpegRunListener) {
        new AsyncTask<String[], Integer, Integer>() {
            @Override
            protected void onPreExecute() {
                if (fFmpegRunListener != null) {
                    fFmpegRunListener.onStart();
                }
            }

            @Override
            protected Integer doInBackground(String[]... params) {
                return run(params[0]);
            }

            @Override
            protected void onPostExecute(Integer integer) {
                if (fFmpegRunListener != null) {
                    fFmpegRunListener.onEnd(integer);
                }
            }
        }.execute(commands);
    }

    public native static int run(String[] commands);

    public interface FFmpegRunListener{
        void onStart();
        void onEnd(int result);
    }
}

本文我们使用一个例子来介绍如何在android代码中使用FFmpeg。废话不多说直接上代码。

这个例子是提取视频中的音频

private void extractAudio() {
        final String outVideo = mTargetPath + "/audio.aac";
        String[] commands = FFmpegCommands.extractAudio(getIntent().getStringExtra("path"), outVideo);
        FFmpegRun.execute(commands, new FFmpegRun.FFmpegRunListener() {
            @Override
            public void onStart() {
                
            }

            @Override
            public void onEnd(int result) {
                
            }
        });
    }

outVideo为我定义的保存提取出来的音频的本地路径
String[] commands = FFmpegCommands.extractAudio(getIntent().getStringExtra("path"), outVideo);这段代码调用提取音频的ffmpeg的代码得到结果是字符串数组。将得到的字符串数组传给FFmpegRun.execute这样的过程就完成了操作。最后实现两个回调的方法。
onStart:操作开始的时候回调
onEnd:操作结束的回调

本文没有那么多字面上的表达,直接上代码比较清晰可见,如果你阅读了这三篇文基本已经可以使用FFmpeg操作音频和视频了。FFmpeg的底层代码相对比较复杂,没必要去阅读懂底层的代码,能够完成Android开发的功能就算是可以了。下午茶到了,大家在工作过程中记得劳逸结合。后面我还会继续更新其它的文章,如果觉得写得还可以,可以关注继续跟踪,如果觉哪里写得有缺陷的,欢迎提出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,269评论 25 708
  • 最近因为要音频处理的研究,音频开发,但是有一个难题就是怎么解析与提取音频的数据,于是就找到了FFmpeg。基本上只...
    知曰阅读 232,190评论 9 96
  • 现状:现在视频直播非常的火,所以在视频直播开发中,使用的对视频进行遍解码的框架显得尤为重要了,其实,这种框架蛮多的...
    ZHANG_GO阅读 3,201评论 0 2
  • 绝大多数的学生都是不指望考到顶级名校的。 正常学生思考顶级名校,或者幻想顶级名校的时间,都是在生命的前十几年。之后...
    五虎谷的格叔阅读 1,972评论 13 20
  • “欢迎来到现实世界,它糟透了,但你会喜欢的。” 大概是秋天带来了丰收的脚步,朋友又给我寄来家里收获的水果,前前后后...
    雪梨邮局阅读 248评论 0 0