FFmpeg入门教程

FFmpeg介绍

多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
在我们实际应用中,对视频格式转换、音视频合并、截图、加水印等功能用的很多,我在里面就使用了音频与视频的合并功能。
下面介绍下具体的使用

FFmpeg的安装

下载

官网下载: http://ffmpeg.org/download.html

安装yasm

官网下载:http://yasm.tortall.net/Download.html

安装yasm

上传至Linux准备安装,解压、安装
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

安装ffmpeg

上传至Linux准备安装,解压、安装
tar -xvzf ffmpeg-4.2.2.tar.gz
cd ffmpeg-4.2.2/
./configure --enable-shared --prefix=/opt/ffmpeg
make (编译过程会有点长)
make install (会把ffmpeg相关执行程序、头文件、lib库安装在/opt/ffmpeg/下)

创建一个文件并写入lib路径
即可执行命令:vim /etc/ld.so.conf.d/ffmpeg.conf
然后添加一行内容:/opt/ffmpeg/lib
之后保存并退出(esc : wq) 然后执行 ldconfig 使配置生效,
现在再次执行./ffmpeg -version 显示就正常了

配置软链接 (ln -s 源文件 目标文件)

ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg

执行ffmpeg出现:

image.png

到此就安装好了,通过 ffmpeg的命令使用,感受他的强大吧

在项目中怎么去使用???


/**
     *
     * @param videoSouce 视频地址
     * @param audioPath  音频地址
     * @param targetPath 合成的文件地址
     */
    public static boolean mergeAudioAndVideo(String videoSouce,String audioPath,String targetPath){
        Process process = null;
        // 这个是获取ffmpegpath 目标机的安装路径
        String ffmpegPath = new DefaultFFMPEGLocator().getFFMPEGExecutablePath();
        try {
            String command =ffmpegPath + " -i " + videoSouce + " -i " + audioPath
                    + " -y " + targetPath;
            process = Runtime.getRuntime().exec(command);
            //process = Runtime.getRuntime().exec(new String[]{"sh","-c",command});
            process.waitFor();
            // 使用这种方式会在瞬间大量消耗CPU和内存等系统资源,所以这里我们需要对流进行处理
            InputStream errorStream = process.getErrorStream();
            InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
            BufferedReader br = new BufferedReader(inputStreamReader);

            String line = "";
            while ((line = br.readLine()) != null) {
            }
            if (br != null) {
                br.close();
            }
            if (inputStreamReader != null) {
                inputStreamReader.close();
            }
            if (errorStream != null) {
                errorStream.close();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }

        return true;
    }

上面代码 就能在项目里面操作FFmpeg了,本质上海是操作ffmpeg命令
上面的命令模式为:

ffmpeg -i 5.webm -i 56.wav -y kb.mp4 合并音视频文件同时转码为mp4格式
ffmpeg命令参考:https://blog.csdn.net/wenmingzheng/article/details/88373192

你可能感兴趣的:(FFmpeg入门教程)