FFmpeg的使用

作者: AS_Vincent | 来源:发表于2017-10-31 15:10 被阅读0次

大家好,我们又见面了,今天已经连续写了两篇文章了,最近公司项目上线了,所以比较轻松,今天跟大家分享一下如何使用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开发的功能就算是可以了。下午茶到了,大家在工作过程中记得劳逸结合。后面我还会继续更新其它的文章,如果觉得写得还可以,可以关注继续跟踪,如果觉哪里写得有缺陷的,欢迎提出来。

相关文章

网友评论

    本文标题:FFmpeg的使用

    本文链接:https://www.haomeiwen.com/subject/kosbpxtx.html