如何修复“ FFmpeg无法就地编辑现有文件。”-Java中的问题

时间:2019-07-06 21:47:20

标签: java ffmpeg

我正在尝试将音频文件写入现有的视频文件。不幸的是,我收到Logmessage,无法原地编辑现有文件。

我发现了有关视频和音频之间的所谓混合的一些线程,但是它们都无法真正帮助我。也许你们中的一些可以。 而且,这也不是我所能做到的。我只是需要使用它的人,因此我必须对其进行修复。

感谢您的帮助

<html>
<head>
    <title>Login V16</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="js/css/main.css"> </head> <html> <body>
</head>
<body>
    <div class="mail">
        <h2>Input your Name and Submit</h2>
        <form name="form1" action="#" onsubmit="return required()">
            <ul>
                <li><input id="input100" type='text' name='text1' /></li>
                <li class="rq">*Required Field</li>
                <li>
                    <input type="submit" />
            </ul>
        </form>
    </div>
    <script>
        function visit() {
            var url = "js/Index.html";
            window.location = url;
        }
        var input = document.getElementById("input100");
        input100.addEventListener("keyup", function (event) {
            if (event.keyCode === 13) {
                event.preventDefault();
                // document.getElementsByClassName("login-button").click();
            }
        });
        function required() {
            var empt = document.forms["form1"]["text1"].value;
            if (empt == "") {
                alert("Please input a Value");
                return false;
            } else {
                localStorage.setItem('username', document.getElementById('input100').value)
                visit()
                return false;
            }
        }
    </script>
</body>
</html>

编辑:正如某人评论的,outputPath与videopath相同。因此将其切换到另一个,因此不会再次出现此问题。但是我的输出视频中仍然没有声音。我为您提供了LOG信息,因此也许您可以从中读取一些信息。

String[] args = { FFMPEG_FILE.getAbsolutePath(), "-y", "-i", videoPath, "-ss", String.valueOf(-offset.toFrames() / 50.0f), "-i", audioPath, "-c", "copy", "-map", "0:v", "-map","1:a", "-bsf:v", "h264_mp4toannexb","-r", String.valueOf(project.getFramerate()), "-shortest",outputPath };

ProcessBuilder pb = new ProcessBuilder(args).inheritIO();
Process p = pb.start();
int exit = p.waitFor();
if (exit != 0) {
     throw new IOException("ffmpeg terminated with a failure");
}

1 个答案:

答案 0 :(得分:0)

对于最初的问题,“ FFmpeg无法就地编辑现有文件。”之所以如此,是因为ffmpeg需要读取输入,因此无法同时替换输入。

对于当前问题,vorbis不是MP4的标准音频编解码器,因此请重新编码音频。

public function insert_user_to_user_reference($referrer_id,$referee_id,$at = date('Y-m-d H:i:s')) { //some code here ... }

(由于您正在写入MP4,C:\Program Files\ffmpeg\bin\ffmpeg.exe, -y, -i, C:\Users\USERNAME\Desktop\Test_Workflow\1.mkv, -ss, 0.0, -i, C:\Users\USERNAME\Desktop\Test\resources/videos/P1000501.MP4\audio.ogg, -c:v, copy, -map, 0:v, -map, 1:a, -r, 25, -shortest, C:\Users\USERNAME\Desktop\Test\testoutput.mp4与您想要的相反,这里不需要)