美文网首页程序员
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