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