Jak mogę uzyskać wysokiej jakości / niskiej wielkości MP4, takie jak grupa wydawnicza LOL?

20

Grupa wydawnicza LOL wykonuje świetną robotę w kodowaniu swoich wydawnictw w The Vampire Diaries (w innych programach, takich jak How I Met Your Mother, szybkość transmisji jest wyższa, więc nie wydaje się to skuteczne).

Około 200 MB na plik MP4 ~ 45min, niesamowita jakość, biorąc pod uwagę.

Zastanawiam się tylko, jakich ustawień i oprogramowania używają. Próbowałem uzyskać informacje z tych plików za pomocą MediaInfo, a następnie użyć ustawień w HandBrake, ale tak naprawdę nie udało mi się.

Czy ktoś mógłby mi pomóc? Nie mam dużej wiedzy na temat kodowania / kompresji.

dziękuję
źródło

Odpowiedzi:

28

Wytyczne dotyczące kodowania (pirackich) filmów nazywane są „przewodnikami po scenach”. Są podpisane przez różne grupy wydawnicze, które dopilnują, aby ich filmy były zgodne z instrukcją, LOL jest jedną z tych grup.

Możesz znaleźć listę przewodników scen scenerules.org . Standard, którego szukasz, to - o ile się nie mylę - standard SD TV TV 2626 , zakładając, że Twój film ma rozdzielczość 1280 × 780. Jeśli masz wideo HD, prawdopodobnie nie osiągniesz naprawdę dobrej jakości przy 200 MB przez 45 minut. To przekłada się na około 600 kBit / si wystarcza na 720p.

Jeśli chodzi o narzędzia do kodowania, możesz zajść daleko za pomocą FFmpeg (na którym opiera się Hamulec ręczny). Jedynym winowajcą jest to, że korzystanie z FFmpeg i dźwięku FAAC jest zakazane dla tego przewodnika po scenach, ale jeśli nie przyczynisz się do tego, to nie będzie miało znaczenia.

Jeśli nie masz wcześniejszego doświadczenia z kodowaniem wideo i wszystkie te słowa kluczowe nic dla ciebie nie znaczą, zapoznaj się z następującymi artykułami na blogu / pytaniami superużytkownika:

Zasadniczo zasady mówią, że musisz używać enkodera x264 z ustawieniem jakości współczynnika stałej szybkości . To, co robi, jest zupełnie inne niż ustawianie stałej przepływności: możesz ustawić CRF, aby x264 kodował wideo ze stałą jakością.

Typowe poziomy CRF wynoszą od 18 do 28, a grupa wydająca zaleca kod 19–20 dla wysokiej jakości kodowania materiału, który jest łatwy do kompresji. Robiąc to, nie będziesz z góry znać ostatecznego rozmiaru pliku, ale o to właśnie chodzi w kodowaniu CRF: nie przejmujesz się rzeczywistym rozmiarem pliku - po prostu chcesz dobrej jakości.

Po skonfigurowaniu ffmpegi przygotowaniu wejściowego wideo kodowanie jest dość proste. Pamiętaj jednak, że źródłowy film musi być wysokiej jakości, w przeciwnym razie ponowne kodowanie tylko pogorszy jego jakość.

Oto kluczowe parametry:

  • x264 wideo z:
    • CRF 19–20
    • slow profil (lepsza wydajność kompresji kosztem czasu kodowania)
    • H.264 poziom 3.1, który określa kilka ograniczeń
    • Skalowanie w dół należy wykonać za pomocą dowolnego resizera innego niż bicubic (który jest domyślnym ustawieniem FFmpeg). Można na przykład używać Lanczos .
    • tuneUstawienie do źródła (na przykład filmdo zawartości błonkowego)
  • Dźwięk AAC z:
    • Kodowanie zmiennej przepływności
    • Przepływność między 96 a 160 kBit / s

W ffmpegten przekłada się na następujące kwestie:

ffmpeg -i input.mp4 \
-c:v libx264 -crf 19 -level 3.1 -preset slow -tune film \
-filter:v scale=-1:720 -sws_flags lanczos \
-c:a libfdk_aac -vbr 5 \
output.mp4

W FFmpeg opcje kodowania AAC są nieco ograniczone. Zobacz tutaj opcje AAC, a także zapoznaj się z Podręcznikiem kodowania FFmpeg i AAC, aby uzyskać więcej informacji.

Jeśli Twój film będzie zbyt duży, możesz dostosować CRF. Wartości ± 6 spowodują połowę / podwojenie szybkości transmisji, więc jeśli zaczniesz od 19 i osiągniesz 25, skończysz z połową szybkości transmisji. Zasady scen nie zezwalają na CRF powyżej 24, ale prawdopodobnie nie będziesz miał nic przeciwko.

slhck
źródło
2

Nie mogę rozmawiać z grupą wydań, o której wspomniałeś, ponieważ nie opublikowałeś informacji medialnej. Ale oto przewodnik dotyczący tworzenia kompaktowych kodowań, co oznacza osiągnięcie dobrej równowagi jakość / rozmiar.

Powinieneś zacząć od HandBrake i najlepszego dostępnego źródła. W sekcji Źródło wybierz krótki, ale trudny do zakodowania segment (zarówno z akcją, jak i drobnymi szczegółami). W sekcji Miejsce docelowe wybierz libmkv . Na karcie Wideo usuń zaznaczenie opcji zaawansowanych (w kolejnych ustawieniach możesz nadal dodawać te opcje pojedynczo ), wybierz opcję --rc=crfratecontrol, najwyższą wartość, jaką --presetkomputer może znieść ( slowerlub veryslow), a --tunektóra odpowiada źródłu ( filmlub animationpowinna go pokryć), oraz ustaw profil i poziom na auto/ auto. Następnie graj z rozdzielczością (tylko jeśli źródłem jest HD; w ustawieniach obrazu), ustaw anamorficzny na luźny i zmieniaj jedną z osi, od następnej rozdzielczości highres i niższej) i --crfdopóki nie znajdziesz dobrego kompromisu między jakością a przepływnością dla twojego krótkiego segmentu. Zauważ, że plik crf jest powiązany z resztą ustawień kodowania, dlatego powinien być ostatnim ustawieniem wideo, które zmienisz. W Audio wybierz Vorbis z prędkością 160 kb / s (wykorzysta to AoTuV -q5, osiągając przezroczystość bez dalszego strojenia). W innych zakładkach, sprawdź, czy zachowane zostało wszystko, co może być potrzebne (znaczniki rozdziałów, ścieżki napisów, metadane itp.). Gdy jesteś zadowolony, możesz użyć tych ustawień, aby zakodować resztę odcinka; średnia szybkość transmisji powinna być znacznie niższa niż w trudnym segmencie. Gdy masz pewność co do swoich ustawień, możesz użyć ich do kodowania całych pór roku.

Jak powyższe kroki poprawiają zwartość: libmkv daje dostęp do większej liczby kodeków, profilu i wersji do auto, co oznacza, że ​​nie będzie żadnych ograniczeń odtwarzania, które powstrzymałyby koder. Krótki segment (kilka sekund) daje o wiele więcej czasu na modyfikacje i spojrzenie na wyniki. Dostrój optymalizuje jakość psychowizualną (postrzeganą) pod kątem tego, jak powinno wyglądać źródło. Wyższe ustawienia wstępne poprawiają zwartość kosztem czasu kodowania (może to nie być zauważalne w trudnym segmencie, ale poprawi przepływność w większości innych scen). CRF ratecontrol oznacza, że ​​kodowanie będzie zmieniać bitrate w celu osiągnięcia określonej jakości, a bardziej wymagające odcinki będą miały więcej miejsca.

Filtr usuwania szumów może być również bardzo przydatny, jeśli zachowasz oryginalną rozdzielczość. Będziesz chciał zachować to światło, ponieważ celem nie jest usunięcie zauważalnej wady źródłowej, ale poprawa ściśliwości bez zauważalnego pogorszenia jakości. Oto przewodnik po użyciu nawilżacza HQDN3D HandBrake , który znajduje się pomiędzy x264 --nri najnowocześniejszymi nawilżaczami jakości.

Tobu
źródło
2

FFmpeg TV

W oparciu o odpowiedź slhck zbudowałem to proste rozwiązanie Python, aby wywoływać odpowiednie ffmpegparametry. Na podstawie najnowszych scenariuszy TV 2016 .

python3 ffmpeg-tv.py input.mp4 output.mkv

Opisane można znaleźć wszystkie parametry i krótki opis, dlaczego zostały ustawione w ten sposób domyślnie.

  # 1.3) Providers which downscale 1080i to 720p (e.g. BellTV) are not allowed.
  # 5.10) Resized video must be within 0.5% of the original aspect ratio.
  scale="-1:-1" # <width>:<height>; -1 maintain ratio.

  # 4.1) Video must be H.264/MPEG-4 AVC encoded with x264 8-bit.
  video_encoder="libx264"

  # 4.4) Constant Rate Factor (--crf) must be used.
  # 4.4.1) CRF values below 18 and above 23 are never allowed.
  # http://slhck.info/video/2017/02/24/crf-guide.html
  # (lossless) 0 <- (better) 23 <- (worst) 51
  # ┌─────────────────┬───────┬───────────────────────────────────────────┐
  # │ Compressibility      │  CRF    │ General Examples                                      │
  # ├─────────────────┼───────┼───────────────────────────────────────────┤
  # │ High                 │ 18-19   │ Scripted, Talk Shows, Animation, Stand-Up             │
  # │ Medium               │ 20-21   │ Documentary, Reality, Variety, Poker                  │
  # │ Low                  │ 22-23   │ Sports, Awards, Live Events                           │
  # └─────────────────┴───────┴───────────────────────────────────────────┘
  crf="19"

  # 4.6) Settings cannot go below what is specified by preset (--preset) 'slow'.
  preset="slow"

  # 4.7) Level (--level) must be '4.1'.
  level="4.1"

  # 6.4) Only sharp resizers, such as Spline36Resize, BlackmanResize or LanczosResize/Lanczos4Resize,
  # must be used.
  # 6.4.1) Simple resizers, such as Bicubic, PointResize or Simple, are not allowed. 
  resizer="lanczos"

  # 4.17) Optional tuning (--tune) parameters allowed are: 'film', 'grain' or 'animation'. 
  # /superuser/564402/explanation-of-x264-tune
  # film – intended for high-bitrate/high-quality movie content. Lower deblocking is used here.
  tune="film"

  # 8.1) Audio must be in the original format provided.
  # 8.1.1) Transcoding audio is not allowed.
  # 8.2) Multiple language audio tracks are allowed.
  # Since we cannot ensure that the external content is in an acceptable TV format, we'll recode
  # it into aac. We're just playing safe here.
  # 
  # FFmpeg supports two AAC-LC encoders (aac and libfdk_aac) and one HE-AAC (v1/2) encoder
  # (libfdk_aac). The license of libfdk_aac is not compatible with GPL, so the GPL does not permit
  # distribution of binaries containing incompatible code when GPL-licensed code is also included.
  # libfdk_aac is "non-free", and requires ffmpeg to be compiled manually.
  # Second best encoder is the native FFmpeg AAC encoder. (aac)
  audio_encoder="aac"

  # Audio quality (bit rate).
  # Use either VBR or CBR. VBR is the easiest.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr
  # VBR: Target a quality, rather than a specific bit rate. 1 is lowest quality and 5 is highest
  # quality.
  # https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr
  # http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Bitrate_Modes
  # CBR: kbps
  vbr="5"
  cbr=None

  # 8.2) Multiple language audio tracks are allowed.
  # 8.2.1) The default audio track must be the language intended for release (e.g. An English release
  # containing English, German and Russian audio tracks, must have the default flag set on the English
  # track).
  # https://trac.ffmpeg.org/wiki/Map
  # Include "all" inputs to the output: -map 0
  map="0"

Zobacz ffmpeg-tv.py, aby uzyskać pełny kod źródłowy.

zurfyx
źródło