FFmpeg / avidemux: napraw spakowane ramki B.

12

Transkoduję niektóre moje stare filmy MPEG4 (w kontenerach AVI) do h.264 za pomocą FFmpeg. Gruntownie

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4

Robiąc to, mpeg4wydaje następujące ostrzeżenie

Wideo wykorzystuje niestandardowy i niepotrzebny sposób przechowywania ramek B („spakowanych ramek B”). Rozważ użycie narzędzia takiego jak VirtualDub lub avidemux, aby to naprawić.

Wiem, że nadal mogę pomyślnie transkodować, ale z ostrzeżenia nie jest dla mnie jasne, czy wpłynie to na jakość wynikowego wideo h.264 .

Więc,

  • Biorąc pod uwagę, że dbam tylko o jakość (i rozmiar, chcę zminimalizować rozmiar moich urządzeń mobilnych, dlatego też używam veryslowustawienia wstępnego) wyjściowego wideo h.264, czy powinienem dbać o zapakowane B- ramki?

  • Jeśli powinienem, jak to naprawić za pomocą avidemux? (Próbowałem już przejrzeć instrukcję).

4ae1e1
źródło

Odpowiedzi:

15

B-klatki są typem klatki używanym w kompresji wideo do reprezentowania klatek wideo. Klatki B mogą wykorzystywać informacje z poprzednich i przyszłych klatek do reprezentowania każdej klatki wideo.

Starsze filmy zakodowane w DivX zwykle używają brzydkiej metody zwanej upakowanym strumieniem bitów, która umieszcza kilka klatek wideo w jednym fragmencie AVI. Upakowany strumień bitów nie jest standardem MPEG-4, zajmuje więcej miejsca, wymaga więcej mocy procesora do kodowania / dekodowania i (co najważniejsze) może powodować problemy, jeśli zostanie skopiowany do innego typu kontenera. To jest główny powód ostrzeżenia.

Ponowne kodowanie wideo zamiast kopiowania powinno być w porządku. Jeśli chcesz zachować oryginalne wideo, ale skopiować je do innego rodzaju kontenera (powiedzmy MP4 lub MKV), najlepiej rozpakować ramki B za pomocą filtra FFmpeg mpeg4_unpack_bframes.

Możesz rozpakować ramki B za pomocą czegoś tak prostego jak

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
xiii1408
źródło