Bandingkan dua file video untuk mencari tahu mana yang memiliki kualitas terbaik

30

Misalkan saya memiliki materi video yang sama dikodekan dalam dua (atau lebih) file. Saya ingin menjalankan beberapa utilitas pada mereka yang pada dasarnya menunjukkan file mana yang "terbaik" dalam kualitas. "Groundly" berarti saya ingin mendapatkan laporan yang membandingkan berbagai aspek (misalnya resolusi video, bitrate video, laju pengambilan sampel audio, bitrate audio, dll., Dll.) Satu per satu, dan kemudian beberapa skor integral yang mencakup semua dari mereka.

Itu tentang fungsi, tetapi agar utilitas itu benar-benar dapat digunakan, itu harus open-source dan command-line.

pfalcon
sumber
Untuk mulai mengumpulkan beberapa informasi terkait (bukan solusi berdasarkan kriteria di atas), ada repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Ini "seperti pro": kompresi .ru / video / quality_measure /… . Tapi ini bukan open-source, dan membandingkan "asli" dan "salin", bukan hanya 2 file yang tidak bias.
pfalcon
Pertanyaan terkait: stackoverflow.com/questions/3518417/…
pfalcon

Jawaban:

88

Saya bekerja dalam penelitian kualitas video, dan sulit untuk memberikan jawaban sederhana untuk pertanyaan Anda. Yang Anda inginkan adalah program yang memberi Anda Skor Opini Rata - Rata (MOS) dari sebuah video, yaitu angka antara 1 dan 5, atau antara 0 dan 100, yang sesuai dengan kualitas yang dirasakan oleh manusia.

Mengapa Anda tidak bisa membandingkan bitrate / resolusi / dll.

Hanya membandingkan resolusi video tidak akan memberi tahu apa-apa tentang kualitas. Bahkan, itu mungkin sepenuhnya menyesatkan. Rip film 1080p pada ukuran 700MB mungkin terlihat lebih buruk daripada rip 720p pada 700MB, karena untuk yang pertama, bitrate terlalu rendah, yang memperkenalkan semua jenis artefak kompresi.

Hal yang sama berlaku untuk membandingkan bitrate pada ukuran frame yang sama, karena enkoder yang berbeda sebenarnya dapat memberikan kualitas yang lebih baik dengan bitrate lebih sedikit, atau sebaliknya. Misalnya, rip 720p 700MB yang diproduksi dengan XviD akan terlihat lebih buruk daripada rip 700MB yang diproduksi dengan x264, karena yang terakhir jauh lebih efisien.

Anda juga harus menentukan bagaimana "skor integral" akhir (MOS) terdiri dari faktor kualitas individu. Ini sangat tergantung pada beberapa hal, termasuk tetapi tidak terbatas pada:

  • jenis video yang Anda bandingkan (kartun, film, berita, dll.)
  • panjangnya
  • pemirsa mereka
  • ukuran bingkai aslinya
  • "kualitas" asli mereka sebelum dikodekan

Kami bahkan tidak berbicara tentang bagaimana manusia akan melihat video. Mari kita asumsikan Anda memiliki teman yang menonton film karena dia menikmati detail yang tajam dan resolusi gerak yang tinggi. Mereka akan jauh lebih kritis ketika melihat rip kualitas rendah daripada teman yang hanya menonton film untuk konten mereka . Mereka mungkin tidak akan terlalu peduli dengan kualitas, asalkan filmnya lucu atau menghibur.

Ada berbagai jenis metrik kualitas video!

Biarkan saya memberi Anda daftar apa yang saya pikirkan paling umum digunakan untuk evaluasi dasar kualitas video hari ini. Ada beberapa metrik kualitas video, yang dapat diklasifikasikan menurut jenis informasi yang digunakan untuk menentukan kualitas. Secara prinsip dan sangat sederhana, Anda membedakan antara yang berikut:

  • Metrik tanpa referensi - Mereka hanya memiliki satu video sebagai input dan output skor kualitas. Dalam kasus Anda, Anda mencari metrik tanpa referensi , karena Anda sering tidak memiliki video aslinya. Metrik semacam itu akan mengambil satu video dan menghasilkan satu skor kualitas. Berikut adalah beberapa contoh masalah yang akan terdeteksi oleh metrik NR (mis. Kabur).

  • Metrik referensi lengkap - Mereka memiliki dua input, satu menjadi video input asli dan lainnya menjadi video yang disandikan. Misalnya, Anda dapat mengambil film DVD, lalu membuat dua robekan dari itu, dan menggunakan metrik referensi lengkap untuk memperkirakan kehilangan kualitas antara film DVD asli (yaitu video MPEG-2 pada disk) dan robekan Anda. Ini akan memakan waktu lama untuk dihitung, tetapi lebih akurat.

Metrik di atas melihat kualitas pengkodean video, tetapi ada juga metrik yang menggabungkan masalah seperti waktu pemuatan awal dan menghentikan aktivitas saat streaming video (mis. ITU-T P.1203 ).

Perangkat lunak apa yang dapat saya gunakan?

Berikut adalah daftar alat yang siap digunakan yang dapat Anda gunakan untuk menguji beberapa metrik (beberapa hanya untuk Windows):

Sekarang, metrik apa yang ada?

PSNR, PSNR-HVS dan PSNR-HVS-M

Sebagai permulaan, PSNR (Peak Signal-to-Noise Ratio) adalah metode yang sangat mudah digunakan tetapi agak buruk untuk menilai kualitas video. Ini bekerja relatif baik meskipun untuk sebagian besar aplikasi, tetapi tidak memberikan estimasi yang baik tentang bagaimana manusia akan merasakan kualitasnya.

PSNR dapat dihitung frame-by-frame, dan kemudian Anda akan misalnya rata-rata PSNR dari seluruh urutan video untuk mendapatkan skor akhir. PSNR yang lebih tinggi lebih baik.

PSNR-HVS dan PSNR-HVS-M adalah ekstensi dari PSNR yang mencoba untuk meniru persepsi visual manusia, sehingga mereka harus lebih akurat. VQMT dan MSU dapat menghitung PSNR, PSNR-HVS dan PSNR-HVS-M antara dua video.

SSIM, MS-SSIM

Structural Similarity (SSIM) semudah menghitung sebagai PSNR, dan memberikan hasil yang lebih akurat, tetapi masih berdasarkan frame-by-frame. Anda akan menemukan beberapa implementasi di bawah tautan Wikipedia, atau Anda dapat menggunakan VQMT atau MSU . Alat-alat ini juga mencakup MS-SSIM, yang memberikan hasil yang lebih baik (yaitu, lebih representatif) daripada SSIM, serta beberapa turunan lainnya.

Hasilnya harus serupa dengan PSNR. Sekali lagi, Anda perlu membandingkan referensi ke video yang diproses agar ini berfungsi, dan kedua video harus berukuran sama.

VMAF

Video Multi-Method Assessment Fusion oleh Netflix adalah seperangkat alat untuk menghitung kualitas video berdasarkan beberapa metrik yang ada, yang kemudian digabungkan dengan metode pembelajaran mesin menjadi skor akhir antara 0 dan 100. Netflix telah menjelaskan semuanya di sini :

[VMAF] memprediksi kualitas subjektif dengan menggabungkan beberapa metrik kualitas dasar. Dasar pemikirannya adalah bahwa setiap metrik dasar mungkin memiliki kekuatan dan kelemahannya sendiri sehubungan dengan karakteristik konten sumber, jenis artefak, dan tingkat distorsi. Dengan 'menggabungkan' metrik dasar ke dalam metrik akhir menggunakan algoritme pembelajaran mesin - dalam kasus kami, sebuah regresi Mesin Vector Support (SVM) - yang memberikan bobot untuk setiap metrik dasar, metrik final dapat mempertahankan semua kekuatan metrik individual. , dan memberikan skor akhir yang lebih akurat.

Anda juga dapat menggunakan ffmpeguntuk menghitung skor VMAF .

VQM

The Video Kualitas Metrik disahkan dalam Video Kualitas Experts Group (VQEG) dan merupakan algoritma penuh referensi yang sangat baik. Anda dapat mengunduh VQM secara gratis atau menggunakan implementasinya dari MSU.

Saat Anda mendaftar dan mengunduh, Anda ingin menggunakan Model Umum NTIA atau Model Kualitas Video dengan Penundaan Frame Variabel .

Metrik Lainnya

  • PEVQ adalah metrik referensi lengkap standar di bawah ITU-T J.246. Ini bertujuan pada sinyal multimedia, tetapi bukan video HD.
  • VQuad-HD adalah metrik referensi lengkap lainnya yang distandarisasi sebagai ITU-T J.341. Karena lebih baru, lebih cocok untuk video HD.

Keduanya merupakan solusi komersial dan Anda tidak akan menemukan perangkat lunak untuk diunduh.

Ada juga beberapa standar ITU pada metrik tanpa referensi, seperti ITU-T P.1201 dan ITU-T P.1202 , yang berfungsi dengan parameter dari bitstream untuk streaming IPTV. ITU-T P.1203 dapat digunakan untuk kasus streaming adaptif.


Ringkasan

Jika Anda hanya ingin membandingkan kriteria sederhana yang dapat diukur secara objektif seperti:

  • Ukuran bingkai
  • Kecepatan bit
  • Bingkai per detik
  • Resolusi video

... panggilan sederhana untuk ffmpeg -imemberi Anda semua detail yang Anda butuhkan di awal. Lihat juga -vstatsopsi. Anda kemudian dapat meringkas ini dalam spreadsheet. Perhatikan bahwa ketika Anda menyandikan video, x264misalnya akan mencatat hal-hal seperti PSNR langsung ke file jika Anda perlu, sehingga Anda dapat menggunakan nilai-nilai ini nanti.

Adapun cara menimbang kriteria ini, Anda mungkin harus menekankan bit rate - tetapi hanya jika Anda tahu bahwa codecnya sama. Anda biasanya dapat mengatakan bahwa ketika kedua video menggunakan x264, yang dengan bitrate lebih tinggi lebih baik. Bahkan yang lebih umum, Anda harus memilih resolusi yang lebih rendah ketika Anda memiliki dua video dengan bitrate yang sama, karena degradasi karena upscaling tidak seburuk degradasi karena bitrate rendah.

Membandingkan berbagai codec sesuai dengan laju bitnya tidak dimungkinkan kecuali Anda tahu lebih banyak tentang konten dan pengaturan penyandian terpisah. Frame rate juga merupakan hal yang sangat subjektif dan harus diperhitungkan dalam pengukuran Anda jika jauh di bawah 25 Hz.

Untuk meringkas, sangat menekankan bitrate jika itu satu-satunya yang Anda miliki. Jangan lupa menggunakan mata Anda juga :)

slhck
sumber
Pertama-tama, sebagai penulis asli pertanyaan, saya minta maaf karena tidak berkomentar sebelumnya. Posting ini memang luar biasa dan sangat dihargai. Sayangnya, saya tidak dapat menerimanya sebagai jawaban untuk pertanyaan awal saya. Alasannya adalah: Saya sengaja memposting pertanyaan di sini dan bukan di StackOverflow, karena saya ingin saran tentang alat yang sudah ada dan siap digunakan. Baik itu pertanyaan tentang bagaimana menulis alat seperti itu, jawaban Anda akan menjadi pemenang mutlak. Tapi maaf, saya tidak bisa menulis semua yang saya butuhkan dari awal, jadi biarkan pengguna di dalam saya mengajukan pertanyaan dan mengharapkan jawaban (mungkin bukan kemarin atau hari ini, mungkin di masa depan ;-)
pfalcon
1
Hebat, jawaban informatif. Meskipun itu bukan jawaban langsung, saya suka melihat orang-orang meluangkan waktu untuk menulis materi informatif tersebut. +1
SuperDuck
1

Saya tidak mengetahui alat apa pun yang akan memberi Anda rekomendasi akhir atau skor, tetapi menggunakan FFmpeg , Anda dapat menampilkan semua detail yang tercantum dalam pertanyaan.

Pada baris perintah, ffmpeg -i akan mencantumkan informasi dari video. Dari sana, Anda dapat menulis skrip untuk mengurai informasi dan menimbangnya sesuai keinginan Anda.

jhulst
sumber
Terima kasih, ya, itulah yang saya lakukan selama beberapa jam sebelum memutuskan untuk menanyakan apakah ada alat "ajaib" yang lebih baik ;-)
pfalcon