我目前正在为发现here的ffmpeg使用此'nightmode downmix'脚本。
@echo off
set PATH_MKVMERGE=D:\Programs\VideoProcessing\mkvtoolnix
set PATH=%PATH%;%PATH_MKVMERGE%
@echo on
cd /d %~dp0
For %%a IN ("*.mkv") Do (
echo ---------------------- BATCH STARTING %%~na%%~xa
ffmpeg.exe -report -loglevel verbose -i "%%~na%%~xa" -map 0:a:0 -f wav -acodec pcm_f32le -ac 2 -af "pan=stereo|FL=FC+0.25*FL+0.60*LFE|FR=FC+0.20*FR+0.60*LFE" - | qaac.exe --tvbr 127 --quality 2 --rate keep --ignorelength --no-delay - -o "%%~na-ffmpeg.m4a" 1>>qaac.log 2>&1
If exist "%%~na.srt" (
mkvmerge.exe --split 4000M -o "%%~na-2chnightmode%%~xa" --no-chapters --no-audio "%%~na%%~xa" "%%~na-ffmpeg.m4a" "%%~na.srt" 1>>"mkvmerge.log" 2>&1
) Else (
mkvmerge.exe --split 4000M -o "%%~na-2chnightmode%%~xa" --no-chapters --no-audio "%%~na%%~xa" "%%~na-ffmpeg.m4a" 1>>"mkvmerge.log" 2>&1
)
)
当前,这只是对音频进行编码,然后将其与视频重新混合,最后,我得到一个带有原始(复制的)视频和缩混音轨的视频文件,以及该音频文件的单独音频文件已创建。
但是,这会将新的音轨放在堆栈的底部。例如,原始文件具有以下音轨:
新导出的音频如下所示:
是否有任何方法可以将新轨道强制为第二轨道,并将其下的所有其他轨道(默认轨道除外)移动到第二轨道,并为该轨道命名,例如“ NightMode 2.0”?还要在将它们全部混在一起后自动删除它创建的“中间”音轨吗?
最后,我剩下一个重新混合的视频文件,其中包含所有原始音频轨道,以及新创建的“ NightMode”轨道以及第二个音频轨道(在默认轨道之后)
这可能吗?