Brak synchronizacji audio wideo za pomocą mencodera

1

Przekształciłem plik mkv (matroska) na avi przy użyciu ffmpeg:

ffmpeg -i input.mkv -f mp4 -vcodec mpeg4 -sameq -r 29.97 -b 512kb -acodec ac3 -ab 128kb -vol 512  output.avi

Plik wyjściowy działa poprawnie przy użyciu mplayera. Następnie użyłem mencodera do wstawienia napisów:

mencoder output.avi -o new.avi -oac pcm -ovc lavc -subfont-text-scale 3 -sub subtitle.srt

Po odtworzeniu wideo „new.avi” wideo i audio nie są zsynchronizowane. Jakie opcje mogę wprowadzić do mencodera, aby zsynchronizować A / V?

Próbowałem też tej ffmpeg -newsubtitleopcji, ale nie mogę jej uruchomić. Wszelkie przykłady użycia -newsubtitlebyłyby bardzo mile widziane.

nhinkle
źródło
Sugeruję, aby spojrzeć na (a) wykonanie całego kodowania za pomocą mencodera, tutaj nie ma potrzeby ffmpeg; (b) -mc 0, -noskip i -vf harddup.
derobert
odtwarzałeś go po konwersji, ale przed wstawieniem napisów? czy to jest zsynchronizowane?
quack quixote

Odpowiedzi:

1

Jak wspomniano derobert, możesz zrobić wszystko w mencoderze, który korzysta z samych bibliotek ffmpeg i jest znacznie potężniejszy, pozwoli to uniknąć transkodowania, które obecnie wykonujesz. Opcja -audio-delay w mencoderze ustawia przesunięcie dźwięku względem wideo, jeśli różnica przesunięcia jest absolutna. Możesz także wypróbować różne ustawienia -autosync (wartość domyślna to 0, w instrukcji wspomniano do 30).

Justin Smith
źródło
1

Jeśli tak naprawdę nie potrzebujesz AVI, możesz spróbować użyć mkvmerge z pakietu MkvToolnix (zamiast mencodera ). MKV mogą zawierać „miękkie” ścieżki napisów, co oznacza, że ​​nie trzeba ponownie kodować strumienia wideo, aby je uwzględnić. (Oznacza to również, że gracze mogą w razie potrzeby wyłączyć ścieżki napisów podczas odtwarzania.)

Dodanie pliku SRT do MKV jest tak proste, jak

$ mkvmerge -o with-subtitles.mkv without-subtitles.mkv mymovie.srt

or to specify a language for the subtitle track:
$ mkvmerge -o with-lang-codes.mkv without-lang-codes.mkv --language 0:eng english.srt --default-track 0

(dostosowany z sekcji Przykłady na stronie podręcznika mkvmerge, do której odsyłacz znajduje się powyżej).

quack quixote
źródło