ffmpeg给视频添加背景音乐未成功解决办法

9 篇文章 0 订阅
本文介绍了一位开发者在Mac系统上使用Java调用ffmpeg4.2.2版本合并视频和音频时遇到的问题。在不添加"-an"参数的情况下,合并后的视频缺少音频。通过添加"-an"参数来禁用音频输入,最终成功将音频背景音乐合并到视频中。这个问题可能与ffmpeg的版本更新有关。
摘要由CSDN通过智能技术生成

1、首先我是mac系统,ffmpeg是通过brew install ffmpeg安装的4.2.2版本的

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers

2、我使用Java编写的合并Video视频和音频背景音乐的功能

package xxxxxx;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class MergeVideoMp {

    private String ffmpegMAC;

    public MergeVideoMp3(String ffmpegMAC) {
        super();
        this.ffmpegMAC = ffmpegMAC;
    }

    public void convertor(String videoInputPath, String mp3InputPath,
                          double seconds, String videoOutputPath) throws Exception {
        List<String> command = new ArrayList<>();
        command.add(ffmpegMAC);

		// disable audio
        👉✅command.add("-an");
        command.add("-i");
        command.add(videoInputPath);

        command.add("-i");
        command.add(mp3InputPath);

        command.add("-t");
        command.add(String.valueOf(seconds));

        command.add("-y");
        command.add(videoOutputPath);

        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) throws Exception {
        MergeVideoMp3 ffmpeg = new MergeVideoMp3("/usr/local/Cellar/ffmpeg/4.2.2_3/bin/ffmpeg");
        try {
         ffmpeg.convertor("xxx/test.mp4","xxxx/BrandenburgConcerto.mp3", 10, "xxxx/output.avi");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

说明一下:

a、
/usr/local/Cellar/ffmpeg/4.2.2_3/bin/ffmpeg
是我ffmpeg安装位置bin下面ffmpeg的路径

b、
xxx/test.mp4是视频文件位置 
xxxx/BrandenburgConcerto.mp3是音频文件路径
10是最后视频的时长
xxxx/output.avi是合并音频之后的视频位置

c、
重点是我没有加下面这行代码的时候,最后生成的视频还是没有音频的
也就是所谓的不成功,不知道是不是跟最新版本的ffmpeg版本有关系还是怎么地?
之前看其他人博客都没加 -an
command.add("-an");
// 因为 -an的意识是指 disable audio

加上上面这条语句就好了,我最后生成的视频有音乐了!!!!👍

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值