FFMPEG mkv到mp4转换失去了字幕


10

目前正在尝试将我的mkv库转换为mp4(Iphone 6 plus)

我已经设法正确地进入mkv到mp4转换,但我错过了字幕部分(SRT)

这是我的代码:

dir/b/s *.mkv >mkvlist.txt   ///////// this gets a list of all the mkv files on the directory

for /F "delims=;" %%F in (mkvlist.txt) do ffmpeg.exe  -i "%%F" -format mp4 -vcodec copy -acodec aac -strict -2 -sn "%%~dF%%~pF%%~nF.mp4"   ///////////// this makes the conversion

del mkvlist.txt     ////// this deletes the txt file

我想在字幕中包含字幕,但是我在将字幕的正确名称插入脚本时遇到了麻烦(因为这是一个多转换批处理)。


.mkv文件是一种容器格式。mkv文件很可能包含可以提取的.srt文件。确保它与.mp4文件具有相同的名称,它应该可以工作。mkv文件实际上可能还包含mp4文件,但也可以包含.divx,.avi或任何其他视频格式。
LPChip 2015年

Answers:


14

MP4不支持SRT。你可以使用softsubs或hardsubs。

softsubs

字幕,作为文件中的单独流。它们可以由播放器打开/关闭,并且不需要重新编码视频流。

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

玩家对MP4中定时文本softsubs的支持可能相当差。你只需要尝试一下。

hardsubs

Hardsubs被“刻录”到视频中,因此视频必须重新编码。

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

有关更多信息,请参阅susbtitles过滤器文档,例如如果有多个字幕流,如何选择特定字幕流。


你能帮我更好地理解我的代码吗?在哪里以及为什么要为sub添加重新编码?(如果你能想到一个解决方案或方法来批量转换子文件夹中的所有文件及其相应的子文件?)(如果没有字幕,那么它将需要完全跳过该文件并转到下一个文件。
dpkmon 2015年

2

我有一个类似的问题从MP4到MKV从我用Handbrake撕开的一些mp4文件。我首先咨询了 https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options,这暗示了mkv vs mp4的特定字幕格式。在玩了无效的ass和mov_text转换之后,我测试了一些文件并注意到dvd_subtitle格式出现了。经过大量的游戏后,下面的工作。

ffmpeg -i "\\server\directory\Sourcefile.mp4" -c:v copy -c:a copy -c:s dvd_subtitle "\\server\directory\Outputfile.mkv"

希望能帮助到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.