2013-07-23 39 views
5

Mam kilka plików m4v, które chcę dodać napisy do z ffmpeg. Wiem, że muszę mapować strumienie, aby uzyskać je w pliku wyjściowym, ale w jaki sposób upewnić się, że ten strumień napisów będzie domyślnym strumieniem? Napisy są .srt i ludzie wydają się mówić, że nie są kompatybilne z kontenerami mp4, czego potrzebuję, aby najpierw dokonać konwersji napisów?Jak ustawić domyślne strumienie z ffmpeg

Ponadto, czy ma znaczenie kolejność różnych strumieni? Czy strumień wideo zawsze musi być pierwszy, a następnie audio, a następnie napisy? Czy możesz je łączyć, jak chcesz? Czy to ma jakieś znaczenie?

Na koniec, jaka jest różnica między strumieniem domyślnym a strumieniem wymuszonym?

Odpowiedz

0
  1. Plik SRT może być używany jako wejście ffmpeg do remiksowania w kontenerze MP4. nie ma problemu ze zgodnością.

    ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4 
    

    Tutaj za mp4 trzeba określić napisów kodek mov_text.

  2. Kolejność się nie liczy, można odwrócić wprowadzanie, można odwrócić ustawienia audio/wideo i kodeków napisów, ponieważ zawsze będzie można odtwarzać razem 3 ścieżki.

    ffmpeg -i subtitles.srt -i input.mp4 -c:s mov_text -c:a copy -c:v copy output.mp4 
    
  3. Nie jestem pewien, ale tutaj wyraźnie ustawić kodek dla napisów może być to, co nazywamy „Forced”. I to jest nieco inna od:

    ffmpeg -i input.mp4 output.mp4 
    

    tutaj ffmpeg użyje jej „domyślny typ Stream” lub kodek do wyjścia MP4.

+1

Przepraszamy za styl, formatowanie odpowiedzi z iPhone'a jest naprawdę trudne! – alexbuisson

+2

Powinni dać odznakę za to. – LordNeckbeard

+0

Myślałem, że domyślne/wymuszone strumienie miały coś wspólnego z odtwarzaniem, dzięki za wyjaśnienie. Jeśli użyję polecenia, które podałeś (ffmpeg -i input.mp4 -i subtitles.srt -c: s mov_text -c: v copy -c: a copy output.mp4) wszystko działa dobrze, jednak początkowo miałem plik wyjściowy jako plik .m4v i natychmiast dostałbym błąd kodeka. Myślałem, że kontenery .mp4 i .m4v są takie same, więc dlaczego spowodowałoby to błąd z jednym, ale działał z drugim? – Sam

2

1. Mam kilka plików M4V, że Ja chce dodać napisy do z ffmpeg.

m4v to podróbka Apple pozbawiona platformy dla standardu MP4. Nie wiem zbyt wiele o tym formacie Apple, ale jak większość starszych formatów kontenerów podejrzewam, że prawdopodobnie obsługuje tylko audio/wideo lub ma słabą lub ograniczoną obsługę napisów.

2. Napisy są .srt i ludzie wydają się mówić, że nie są kompatybilne z kontenerami mp4, co jest potrzebne, aby najpierw dokonać konwersji napisów?

Możesz konwertować napisy za pomocą narzędzia takiego jak AegisSub lub Gaupol. Jednak moim zaleceniem jest użycie narzędzia MKVMerge, które wytworzy kontener plików MKV, format kontenera, który został zaprojektowany do obsługi szerokiej gamy różnych strumieni, w tym napisów (prawie każdego typu), czcionek i załączników. MKVmerge umożliwia również określenie domyślnych strumieni.

3. Czy ma znaczenie kolejność różnych strumieni? Czy strumień wideo zawsze musi być pierwszy, a następnie audio, a następnie napisy? Czy możesz je łączyć, jak chcesz? Czy to ma jakieś znaczenie?

Nie. Typ każdego strumienia (wideo/audio/podtytuł/inne) jest określony w nagłówku. Gracze dowiedzieć się, co jest które.

4.Na koniec, jaka jest różnica pomiędzy strumieniem domyślnym a strumieniem wymuszonym?

Domyślny strumień to domyślny odtwarzacz, jeśli nie ustawiłeś w swoim odtwarzaczu kodu preferencji językowych (ENG, JAP, SPA, ITA itp.). Wymuszony strumień wymusza ten strumień niezależnie od ustawień określonych w odtwarzaczu.

+4

ffmpeg [może teraz] (https://ffmpeg.org /pipermail/ffmpeg-devel/2015 - styczeń/167371.html) określa również domyślne strumienie. opcja ** - disposition: a: 1 default ** zaznaczy drugi dźwięk jako domyślny, ale nie zapomnij usunąć domyślnego tagu z pierwszej ścieżki: np. ** - disposition: a: 0 none ** lub inny typ z linku. Utworzy kopię oryginalnego pliku, więc nie jest to natychmiastowa zmiana, np. Przy użyciu mkvpropedit z opcją --set flag-default. – papo

+1

m4v to mp4. dokładnie to samo. Jedyną różnicą jest używanie Quicktime [nie odtwarza audio AC3] (https://trac.handbrake.fr/wiki/Containers) z pliku mp4. – papo