我是靠谱客的博主 欢喜花瓣,最近开发中收集的这篇文章主要介绍javacv相关学习:使用java调用ffmpeg命令合并音视频(解决时长不一致问题)上期回顾,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上期回顾

使用javacv调用ffmpeg命令推流

实现想法

1.获取JavaCV中的ffmpeg本地库的调用路径 。
2.拼接命令
3.使用ProcessBuilder类 来操作系统进程。

引入javacv版本

           <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg-platform</artifactId>
            <version>4.4-1.5.6</version>
        </dependency>
        
       

核心方法

/**
     * 操作系统进程
     *
     * @return
     */
    public  static  void   execute(List<String> command) {

        try {
            String join = String.join(" ", command);
            System.out.println(join);
            ProcessBuilder  process = new ProcessBuilder(command);
            process.inheritIO().start().waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

调用

public static void main(String[] args) {
        List<String> command = new ArrayList<>();
        //获取JavaCV中的ffmpeg本地库的调用路径
        String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
        command.add(ffmpeg);
        command.add("-re");
        command.add("-i");
        command.add("./record/f1_1.flv");
        command.add("-i");
        command.add("./record/test.mp3");
        command.add("-filter_complex");
        command.add("amix");
        command.add("-map");
        command.add("0:v");
        command.add("-map");
        command.add("0:a");
        command.add("-map");
        command.add("1:a");
        //-shortest会取视频或音频两者短的一个为准,多余部分则去除不合并
        command.add("-shortest");
//
        //可以推到 流媒体服务器上。 例如srs
        //command.add("rtmp://8.136.201.114:1935/live/livestream");
        //文件夹需要自己创建。
        //也可以推到其他的文件夹(相当于录像)
         command.add("./file/test.flv");



        long start = System.currentTimeMillis();
        execute(command);
        System.out.println("用时:" + (System.currentTimeMillis()-start));
    }

成功截图

在这里插入图片描述

在这里插入图片描述
这一次我们举例用的是ffmpag中的推流命令。

ffmpeg -re -i 原文件() -c copy -f 格式 -y 目标文件()

ffmpag中有很多的命令。后面有时间我会整理一些命令给大家参考。

文档参考

javacv源码
部分参考文档

学习java群

java交流群(限订阅了的加):868794080

免费扫码领取红包

在这里插入图片描述

最后

以上就是欢喜花瓣为你收集整理的javacv相关学习:使用java调用ffmpeg命令合并音视频(解决时长不一致问题)上期回顾的全部内容,希望文章能够帮你解决javacv相关学习:使用java调用ffmpeg命令合并音视频(解决时长不一致问题)上期回顾所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部