-map_metadata 抓取多个音频流元数据

-map_metadata 抓取多个音频流元数据

现在我有一个批处理文件来删除所有元数据,然后应用我喜欢的和只需要的元数据,它会删除所有元数据并使标题名称成为文件名。

但我希望它保留音轨语言元数据。

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"

这是针对这个文件的:

https://pastebin.com/hfSUzMPp

我很想弄清楚如何自动复制所有现有的音频流元数据并将其应用于新的 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

但这会导致两个音频流都被定义为日语。

https://pastebin.com/vwVRSc75

而不是正确地将音频流 1 设为日语,将音频流 2 设为英语。

答案1

选项的顺序很重要。当同一选项有多个实例时(带或不带相同的说明符),将首先应用左侧的选项。

ffmpeg -i "%%a" -map 0:v -map 0:a? -map_metadata:g -1 -c copy -metadata title="%%~na" "output\%%~a"

相关内容