需要批处理命令才能自动创建卡拉OK

时间:2016-12-17 01:36:05

标签: windows batch-file cmd ffmpeg

我用这些代码制作卡拉OK并将其刻录成VCD。

xxxxxx_1.m4a文件是左声道(乐器), xxxxxx_0.m4a文件是右声道(带声乐的歌曲)。 将它们合并到become xxxxxx.m4a

ffmpeg -i 123456_1.m4a -i 123456_0.m4a -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3[aout]" -map "[aout]" 123456.m4a

xxxxxx_3.mp4文件是没有声音的视频。 将xxxxxx_3.mp4xxxxxx.m4a合并为卡拉OK视频。

ffmpeg -i 123456_3.mp4 -i 123456.m4a -c:v copy -c:a copy 123456.mp4

xxxxxx.mp4转换为.mpg格式并刻录到VCD。

ffmpeg -i 123456.mp4 -target pal-vcd 123456.mpg

所有这些123456_1.m4a123456_0.m4a123456_3.mp4都位于同一文件夹中。 这只是一首歌。我有很多需要转换的歌曲,我不想复制和粘贴每首歌来执行此任务。

我尝试使用for /f命令自动完成此转换。

1 个答案:

答案 0 :(得分:0)

像这样(未经测试):

@Echo off
Set "Base=X:\path\to\your\folder"
PushD "%Base%"2>Nul ||(Echo Can't change to %Base% &Pause&Exit /B 1)
For %%A in (*_3.mp4) Do For /f "Delims=_" %%B in ("%%A") Do Call :Assemble "%%~A" "%%~B"
PopD
Goto :Eof
:Assemble
Echo Processing %~2
If Not Exist "%~2_0.m4a" (Echo %~2 right channel missing& Goto :Eof)
If Not Exist "%~2_1.m4a" (Echo %~2 left  channel missing& Goto :Eof)
ffmpeg -i "%~2_1.m4a" -i "%~2_0.m4a" -filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3[aout]" -map "[aout]" "%~2.m4a"
ffmpeg -i %1 -i "%~2.m4a" -c:v copy -c:a copy "%~2.mp4"
ffmpeg -i "%~2.mp4" -target pal-vcd "%~2.mpg"