FFMPEG-在for循环中合并(而不是连接)多组2个视频

FFMPEG-在for循环中合并(而不是连接)多组2个视频

我有一个文件夹 A,里面有 mp4 音频。文件夹 B 里面有 mp4 视频。文件名匹配,只是它们位于不同的文件夹中。

这些是电影文件,下载后分为两个单独的文件。现在我想使用 FFMPEG 将它们合并在一起。

我有一个包含 100 多个文件的很长的列表,因此我试图使该过程自动化。

我尝试了以下代码的许多不同组合:下面的代码不起作用,出现了错误并且没有运行该过程:

  audiopath="/Audio"

for i in /Video/*.mp4
do
    if ! [[ -e "$ audiopath /${i##*/}" ]]
    then
>&2 echo "no matching file in $ audiopath for $i"
        continue
    fi
    out="${i##*/}"
    out="/Movies/${out%.*}-$(%title)"

    ffmpeg -i <(printf '%s\n' "file '$i'") -i ("file '$ audiopath /${i##*/}'") -c:v copy -c:a copy "$out.mp4"
done

如果我使用下面的交换并将其与上面的代码 1 一起使用,它会将文件一个接一个地连接起来,但我听不到声音,只有一段长视频。

  ffmpeg -f concat -safe 0 -i <(printf '%s\n' "file '$i'" "inpoint 0" "file '$seconddirectory/${i##*/}'" "inpoint 0") -c copy "$out.mp4"

第二段代码可以工作,但是当然必须手动完成:

 ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a copy OUTPUT_FILE.mp4   

经过几个小时,我来这里寻求帮助。有人知道如何修复此代码或可以给我指出正确的方向吗?

相关内容