美文网首页程序员
macos下ffmpeg使用及java调用

macos下ffmpeg使用及java调用

作者: Symbian米汤 | 来源:发表于2018-07-06 23:04 被阅读0次

    一开始我看的教程是使用windows版的ffmpeg,使用方法就是从官网下载已经编译好的,直接调用/bin文件夹下的ffmpeg.exe.

    下载

    我是在mac环境下使用,官网其实也有已经编译好的。在官网http://ffmpeg.org/download.html#build-mac下载,
    如图1:

    下载地址1
    我选择的是Static and shared builds for macOS 64-bit
    如图2:
    下载地址2
    1.Version 选择20180706,
    2.Architecture:选择macOS 64-bit ,
    3.Linking :选择Static。
    然后将文件解压,这个版本应该是直接编译好的,直接使用bin文件夹目录下的ffmpeg 就可以用了。

    控制台里使用:

    官方提供的命令:用于格式转换
    $ ffmpeg -i input.mp4 output.avi
    

    实际操作:

    1.我把它解压到文稿目录下:


    实际操作

    2.在控制台下进入ffmpeg的bin目录下


    进入ffmpeg/bin目录下
    3.调用ffmpeg进行格式转换,转换的文件:123.mp4,转换后的文件out123.avi
    $ ffmpeg -i 123.mp4  out123.avi
    
    转换
    使用java调用fmpeg命令进行格式转换
    实现的原理:ffmpeg都是通过命令窗口输入命令进行格式转换,在java环境中可以通过使用ProcessBuilder,通过字符串组合成命令,进行ffmpeg命令的使用。

    ,那么我们先创建一个名为FFMpegTest的类:

    public class FFMpegTest {
    
        private String ffmpegEXE;
        
        public FFMpegTest(String ffmpegEXE) {
            super();
            this.ffmpegEXE = ffmpegEXE;
        }
        
        public void convertor(String videoInputPath, String videoOutputPath) throws Exception {
    //      ffmpeg -i input.mp4 -y output.avi
            List<String> command = new ArrayList<>();
            command.add(ffmpegEXE);
            
            command.add("-i");
            command.add(videoInputPath);
            command.add("-y");
            command.add(videoOutputPath);
            
            for (String c : command) {
                System.out.print(c + " ");
            }
            
            ProcessBuilder builder = new ProcessBuilder(command);
            Process process = builder.start();
            
            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();
            }
            
        }
    
        public static void main(String[] args) {
            FFMpegTest ffmpeg = new FFMpegTest("/Users/hou/Documents/ffmpeg-static/bin/ffmpeg");
            try {
                ffmpeg.convertor("/Users/hou/Documents/ffmpeg-static/bin/123.mp4", "/Users/hou/Documents/ffmpeg-static/bin/java123.mp4");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }
    
    mp4视频与mp3音频合并:

    前面的-i :输入的视频文件,后面的-i:输入的音频文件,-t :输入视频的实际长度单位为秒,-y:合成的文件名及格式后缀

    $ ffmpeg -i 123.mp4 -i Fitz.mp3 -t 10 -y mix.mp4
    
    合并后的文件目录

    相关文章

      网友评论

        本文标题:macos下ffmpeg使用及java调用

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