我用这些代码制作卡拉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.mp4
与xxxxxx.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.m4a
,123456_0.m4a
和123456_3.mp4
都位于同一文件夹中。
这只是一首歌。我有很多需要转换的歌曲,我不想复制和粘贴每首歌来执行此任务。
我尝试使用for /f
命令自动完成此转换。
答案 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"