Konwersja FFMPEG mkv na mp4 traci napisy

10

Obecnie próbuję przekonwertować moją bibliotekę mkv na mp4 (Iphone 6 plus)

Udało mi się poprawnie przejść do konwersji mkv na mp4, ale brakuje mi części napisów (SRT)

Oto mój kod:

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

Chciałbym dołączyć napisy do skryptu, ale mam problem z wstawieniem poprawnej nazwy napisów do skryptu (ponieważ jest to partia wielokrotnej konwersji).

dpkmon
źródło
Pliki .mkv są formatem kontenera. Jest bardzo prawdopodobne, że plik mkv zawiera plik .srt, który można wyodrębnić. Upewnij się, że ma taką samą nazwę jak plik .mp4 i powinien działać. Plik mkv może faktycznie zawierać również plik mp4, ale może mieć również format .divx, .avi lub inny format wideo.
LPChip

Odpowiedzi:

14

MP4 nie obsługuje SRT. Możesz użyć softsubs lub hardsubs.

Softsubs

Napisy, które składają się z osobnego strumienia w pliku. Mogą być włączane / wyłączane przez odtwarzacz i nie wymagają ponownego kodowania strumienia wideo.

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

Obsługa odtwarzaczy tekstowych w określonym czasie w MP4 może być raczej słaba. Musisz tylko spróbować.

hardsubs

Filmy typu „hard” są „wypalane” w filmie, dlatego należy go ponownie zakodować.

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

Zobacz dokumentację filtra susbtitles, aby uzyskać więcej informacji, na przykład jak wybrać konkretny strumień napisów, jeśli jest ich więcej.

Llogan
źródło
Czy możesz mi pomóc lepiej zrozumieć mój kod? Gdzie i dlaczego miałbyś dodać ponowne kodowanie dla subskrybentów? (A jeśli możesz wymyślić rozwiązanie lub sposób wsadowej konwersji wszystkich plików w podfolderach z odpowiadającymi im napisami?) (Jeśli nie ma napisów, to musiałby całkowicie pominąć plik i przejść do następnego.
dpkmon
2

Miałem podobny problem z przejściem z MP4 na MKV z niektórych plików MP4 zgranych za pomocą Handbrake. Najpierw skonsultowałem https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options , co sugerowało określone formaty napisów dla mkv vs mp4. Po zabawie z konwersjami ass i mov_text, które nie działały, przetestowałem niektóre pliki i zauważyłem pojawienie się formatu dvd_subtitle. Po wielu zabawach, następujące działały.

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

Mam nadzieję, że to pomoże.

Von Rugen
źródło