Napraw wideo m4v z opóźnionym dźwiękiem (audio i wideo nie są zsynchronizowane)


2

Oto podobne pytanie dotyczące systemu Windows:

Narzędzie do naprawy niesynchronizowanego wideo z dźwiękiem?

Mam nadzieję rozwiązać ten problem na komputerze Mac.

Próbowałem Handbrake i Avidemux (ten drugi wydaje się mieć opcję - „shift” - aby to naprawić, ale w ogóle nie odtwarza dźwięku, więc nie wiem, czy coś robi!).


Czy cel go obserwuje, czy zapisuje na urządzeniu? Istnieją proste opcje, jeśli chcesz po prostu obejrzeć to na swoim lappy.
— nerdwaller

Ach, tak, celem jest ocalenie go (ostatecznie do youtube).
— dreeves

Odpowiedzi:


5

Zdobądź kopię FFmpeg. Zobacz na dole tego postu, jak to zrobić.

Niezależnie od tego, czy wideo pozostaje w tyle za dźwiękiem, czy odwrotnie, to nie ma znaczenia. Podstawowe polecenie jest następujące. Przekażemy dane wejściowe dwa razy, co widać po dwóch -iopcjach, a następnie opóźnimy jedno wejście i połączymy je z powrotem.

ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv

Tutaj offsetjest opóźnienie w sekundach, np . 1.5Lub 0.35. Ta wartość musi być dodatnia, więc jeśli twój dźwięk pozostaje w tyle za filmem, będziemy musieli go zrównoważyć. Jest to pokazane w powyższym przykładzie. Podobnie, jeśli wideo pozostaje w tyle za dźwiękiem, będziemy musieli go zrównoważyć.

Jak więc wybrać, czy opóźnić audio czy wideo? Ponieważ opóźniliśmy całość in.flv, po prostu wybieramy strumienie audio lub wideo i łączymy je z oryginalnymi strumieniami audio lub wideo. Odbywa się to w -mapopcjach.

Zasadniczo mapma dwie liczby. Ten przed dwukropkiem określa numer pliku wejściowego (zaczynając od 0), a drugi numer określa strumień pliku wejściowego (również zaczynający się od 0).

Aby opóźnić dźwięk, użyj następujących dwóch opcji:

  • -map 1:0 oznacza: Weź pierwszy strumień z drugiego pliku wejściowego (wideo z oryginalnego pliku)
  • -map 0:1 oznacza: Weź drugi strumień z pierwszego pliku wejściowego (audio z pliku opóźnionego)

Odwróć to, jeśli musisz opóźnić wideo:

  • -map 0:0 oznacza: Weź pierwszy strumień z pierwszego pliku wejściowego (wideo z pliku opóźnionego)
  • -map 1:1 oznacza: Weź drugi strumień z drugiego pliku wejściowego (audio z oryginalnego pliku)

Wreszcie -c copypo prostu powie FFmpeg, aby skopiował strumienie bitów wideo i audio. Oznacza to, że nie będzie procesu kodowania. To sprawia, że ​​polecenie jest bardzo szybkie i nawet nie stracisz żadnej jakości w procesie. Jeśli jednak wystąpią błędy synchronizacji, należy je pominąć -c copyi pozwolić FFmpeg ponownie zakodować dane wejściowe.


Możesz uzyskać najnowszą stabilną wersję FFmpeg za pośrednictwem Homebrew .

  • Otwórz terminal i wprowadź:

    ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
    
  • Zobacz także wymagania instalacyjne . Jeśli tego nie zrobiłeś, musisz zainstalować Narzędzia wiersza polecenia dla Xcode. Do tego potrzebny będzie identyfikator Apple ID.

  • Po zainstalowaniu Homebrew zainstaluj FFmpeg:

    brew install ffmpeg
    
  • Gdy to zrobisz, możemy użyć FFmpeg, aby naprawić twój film.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.