Bagaimana saya bisa mendapatkan MP4 berkualitas tinggi / ukuran rendah seperti grup rilis LOL?


20

Grup rilis LOL melakukan pekerjaan yang sangat baik dalam mengkodekan rilis mereka di The Vampire Diaries (pada acara lain seperti How I Met Your Mother I bitrate lebih tinggi, jadi sepertinya ini tidak efektif).

Sekitar 200 MB setiap file ~ 45 menit MP4, kualitas luar biasa mempertimbangkan.

Saya hanya ingin tahu pengaturan apa dan perangkat lunak apa yang mereka gunakan. Saya sudah mencoba mendapatkan info dari file-file ini menggunakan MediaInfo, kemudian menggunakan pengaturan di HandBrake, tetapi saya tidak benar-benar berhasil.

Adakah yang bisa membantu saya? Saya tidak memiliki banyak pengetahuan tentang pengkodean / kompresi.

Jawaban:


28

Pedoman untuk encoding (bajakan) video disebut "pemandu adegan". Mereka ditandatangani oleh berbagai grup rilis yang akan memastikan video mereka mematuhi panduan ini, LOL menjadi salah satu dari grup ini.

Anda dapat menemukan daftar panduan pemandangan scenerules.org . Standar yang Anda cari adalah — jika saya tidak salah — SD x264 TV Releasing Standard , dengan asumsi bahwa video Anda 1280 × 780. Jika Anda memiliki video HD, Anda mungkin tidak akan mendapatkan kualitas yang sangat baik pada 200 MB selama 45 menit. Itu akan menerjemahkan sekitar 600 kBit / s dan akan cukup untuk 720p.

Adapun alat encoding, Anda bisa mendapatkan FFmpeg (yang berbasis Handbrake). Satu-satunya penyebabnya adalah bahwa penggunaan audio FFmpeg dan FAAC dilarang untuk panduan adegan itu, tetapi kecuali jika Anda benar-benar berkontribusi, itu tidak masalah.

Jika Anda tidak memiliki pengalaman sebelumnya dengan encoding video dan semua kata kunci ini tidak berarti apa-apa bagi Anda, silakan lihat artikel blog berikut / pertanyaan Pengguna Super:

Pada dasarnya, aturan mengatakan Anda harus menggunakan enkoder x264 dengan pengaturan kualitas Constant Rate Factor . Apa yang dilakukannya sangat berbeda dari pengaturan bitrate konstan: Anda dapat mengatur CRF agar x264 mengkodekan video dengan kualitas konstan.

Level CRF tipikal adalah antara 18 dan 28, dan kelompok pelepas merekomendasikan 19-20 untuk pengkodean material berkualitas tinggi yang mudah dikompres. Anda tidak akan mengetahui ukuran file terakhir sebelumnya ketika melakukan itu, tetapi itulah inti dari melakukan pengkodean CRF: Anda tidak peduli dengan ukuran file yang sebenarnya — Anda hanya menginginkan kualitas yang baik.

Setelah Anda mengatur ffmpeg, dan Anda sudah siap video input Anda, pengkodean sebenarnya cukup sederhana. Perhatikan bahwa video sumber Anda harus berkualitas tinggi, jika tidak, pengodean ulang hanya akan menurunkan kualitasnya lebih banyak.

Berikut adalah parameter kunci:

  • video x264 dengan:
    • CRF 19–20
    • slow profil (efisiensi kompresi yang lebih baik dengan mengorbankan waktu pengkodean)
    • H.264 level 3.1, yang menetapkan beberapa kendala
    • Downscaling harus dilakukan dengan resizer selain bicubic (yang merupakan FFmpeg-default). Lanczos dapat digunakan , misalnya.
    • Sebuah tunepengaturan untuk sumber (misalnya filmuntuk konten film seperti)
  • Audio AAC dengan:
    • Pengkodean laju bit variabel
    • Kecepatan bit antara 96 ​​dan 160 kBit / s

Dalam ffmpeg, ini diterjemahkan sebagai berikut:

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

Dalam FFmpeg, pilihan Anda untuk pengkodean AAC agak terbatas. Lihat di sini untuk pilihan AAC Anda dan lihat juga Panduan Pengkodean FFmpeg dan AAC untuk informasi lebih lanjut.

Jika video Anda terlalu besar, Anda dapat menyesuaikan CRF. Nilai ± 6 akan menghasilkan setengah / dua kali lipat kecepatan bit, jadi jika Anda mulai dengan 19 dan pergi ke 25, Anda akan berakhir dengan setengah bitrate. Aturan adegan tidak mengizinkan CRF di atas 24, tetapi Anda mungkin tidak akan keberatan.


2

Tidak dapat berbicara dengan grup rilis yang Anda sebutkan karena Anda tidak memposting mediainfo. Tapi di sini ada panduan untuk membuat encode yang ringkas, yang berarti memberikan keseimbangan kualitas / ukuran yang baik.

Anda harus mulai dengan HandBrake dan sumber terbaik yang tersedia. Di bagian Sumber , pilih segmen pendek tapi sulit untuk menyandikan (dengan aksi dan detail halus). Di bagian Tujuan , pilih libmkv . Pada tab Video , hapus centang menggunakan opsi lanjutan (Anda masih dapat menambahkan opsi-opsi tersebut kasus per kasus dalam pengaturan lainnya ), pilih --rc=crfkontrol tikus, yang paling tinggi yang --presetdapat ditanggung komputer Anda ( sloweratau veryslow), --tuneyang sesuai dengan sumber ( filmatau animationharus menutupinya), dan atur profil dan level ke auto/ auto. Kemudian mainkan dengan resolusi (hanya jika sumbernya HD; dalam pengaturan gambar, atur anamorphic menjadi longgar dan variasikan salah satu sumbu, dari resolusi highres berikutnya dan bawah) dan --crfhingga Anda menemukan kompromi yang baik antara kualitas dan bitrate untuk segmen pendek Anda. Perhatikan bahwa crf terikat ke pengaturan pengaturan penyandian Anda lainnya, itulah sebabnya mengapa ini harus menjadi pengaturan video terakhir yang Anda ubah. Dalam Audio , gunakan Vorbis pada 160kbps (ini akan menggunakan AoTuV -q5, mencapai transparansi tanpa penyetelan lebih lanjut). Di tab lain, periksa apakah semua yang Anda butuhkan terpelihara (tanda bab, trek subtitle, metadata, dll). Setelah puas, Anda dapat menggunakan pengaturan ini untuk menyandikan sisa episode; bitrate rata-rata harus berakhir jauh lebih rendah daripada pada segmen yang sulit. Saat Anda yakin dengan pengaturan Anda, Anda dapat menggunakannya untuk menyandikan seluruh musim.

Bagaimana langkah-langkah di atas meningkatkan kekompakan: libmkv memberi Anda akses ke lebih banyak codec, profil, dan versi ke otomatis berarti tidak akan ada kendala pemutaran untuk menahan encoder. Segmen pendek (beberapa detik) memberi Anda lebih banyak waktu untuk mengubah hal-hal dan melihat hasilnya. Tune mengoptimalkan kualitas psikovisual (persepsi) untuk seperti apa sumbernya. Preset yang lebih tinggi meningkatkan kekompakan dengan mengorbankan waktu penyandian (ini mungkin tidak terlihat pada segmen sulit Anda, tetapi akan meningkatkan bitrate di sebagian besar adegan lain). CRF ratecontrol berarti bahwa enkode Anda akan memvariasikan bitrate untuk menargetkan kualitas yang diberikan, dengan episode yang lebih menuntut mendapatkan lebih banyak ruang.

Filter denoising juga bisa sangat berguna jika Anda mempertahankan resolusi aslinya. Anda ingin membuatnya tetap ringan karena tujuannya bukan untuk membersihkan sumber yang rusak, tetapi untuk meningkatkan kompresibilitas tanpa menurunkan kualitas yang nyata. Berikut ini adalah panduan untuk menggunakan denoiser HQDN3D HandBrake , yang berada di antara x264 --nrdan denois canggih untuk kualitas.


2

TV FFmpeg

Berdasarkan jawaban slhck saya membangun solusi Python sederhana ini untuk memanggil ffmpegparameter yang tepat . Berdasarkan standar TV scenerules 2016 terbaru .

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

Dijelaskan Anda dapat menemukan semua parameter, dan deskripsi singkat tentang mengapa mereka ditetapkan dengan cara ini secara default.

  # 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"

Lihat ffmpeg-tv.py untuk kode sumber lengkap.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.