现在我有一个批处理文件来删除所有元数据,然后应用我的首选和唯一需要的元数据,它会删除所有元数据并使标题名称成为文件名。
但我希望它保留音轨语言元数据。
mkdir output
for %%a in (*.mp4) do ffmpeg -i "%%a" -map 0:v -map 0:a? -metadata:s:a:0 language=jpn -metadata:s:a:1 language=eng -c copy -map_metadata -1 -metadata title="%%~na" "output\%%~a"
这是针对此文件的:
我很想弄清楚如何自动复制所有现有的音频流元数据并将其应用于新的 bat,因为截至目前我必须手动定义语言,这对于大批量文件来说并不有趣。
我试过这个:
mkdir output
for %%a in (*.mp4) do ffmpeg -i "%%a" -map 0:v -map 0:a? -map_metadata:s:a 0:s:a -c copy -map_metadata -1 -metadata title="%%~na" "output\%%~a"
pause
但它会导致两个音频流都被定义为日语。
而不是正确的音频流编号 1 是日语,第二个是英语。
选项的顺序很重要。当同一个选项有多个实例时(有或没有相同的说明符),左边的将首先应用。
ffmpeg -i "%%a" -map 0:v -map 0:a? -map_metadata:g -1 -c copy -metadata title="%%~na" "output\%%~a"