Ffmpeg 有没有一种方法可以对语言管理的多个音频和子流进行编码
所以,我有一个满是.mkv的文件夹,我有一行程序可以将它们全部转换成mp4 这些新文件现在有多个音频和字幕流,一个英文、一个ger、一个jap,对于相同的字幕,是否有一种方法可以方便地指定使用f.e.德语音频和burn-eng字幕。 我的一行:Ffmpeg 有没有一种方法可以对语言管理的多个音频和子流进行编码,ffmpeg,mp4,mkv,Ffmpeg,Mp4,Mkv,所以,我有一个满是.mkv的文件夹,我有一行程序可以将它们全部转换成mp4 这些新文件现在有多个音频和字幕流,一个英文、一个ger、一个jap,对于相同的字幕,是否有一种方法可以方便地指定使用f.e.德语音频和burn-eng字幕。 我的一行: for /R %f IN (*.mkv) DO ffmpeg -i "%f" -c copy "%~nf.mp4" 我将如何修改这一班轮工作。 我发现使用-vf subtitles=foo.ass可以硬编码字幕,
for /R %f IN (*.mkv) DO ffmpeg -i "%f" -c copy "%~nf.mp4"
我将如何修改这一班轮工作。
我发现使用-vf subtitles=foo.ass可以硬编码字幕,但是如何从文件中选择一个音频和/或字幕流?
我该如何选择f.e.音频流而非字幕流
我发现了,那是因为
-map 0:V -map 0:a:m:language:ger -map 0:s
我可以得到一个文件,其中只有德语音频文件,但现在我需要同样的字幕,只包括英语的
我可以得到一个文件,其中只有德语音频文件,但现在我需要同样的字幕,只包括英语的
要刻录字幕,必须提供文件名,还可以提供流索引。您可以使用ffprobe
确定所需字幕语言的字幕索引:
ffprobe -v error -select_streams s -show_entries tags=language -of default=nw=1:nk=1 input.mkv
示例输出:
ger
eng
因此,ger
是索引0,eng
是索引1
最终ffmpeg
命令:
ffmpeg -i input.mkv -filter_complex "subtitles=f=input.mkv:si=1[v]" -map "[v]" -map 0:a:m:language:ger -c:a copy -movflags +faststart output.mp4
ffmpeg -i input.mkv -filter_complex "subtitles=f=input.mkv:si=1[v]" -map "[v]" -map 0:a:m:language:ger -c:a copy -movflags +faststart output.mp4