Mengapa pengodean VP8 / 9 sangat lambat dibandingkan dengan H.264?


11

Baru-baru ini saya ingin mencoba Webm codec VP8 dan VP9 tetapi ketika saya berlari ffmpeguntuk menyandikan file H.264 MP4 ke dalam salah satu dari dua codec lainnya, saya menyadari bahwa penyandian (dengan urutan hampir besar) lebih lambat.

Video 1080p30 dari H.264 hingga VP9 dengan kecepatan 3 MBit / dtk sedang dikodekan pada kisaran 6-7 fps sementara video yang sama mengkodekan sekitar 40 fps ke H.264. Saya menggunakan libvpx-vp9codec ffmpeguntuk format VP9. Saya mendapatkan hasil yang sama untuk VP8 dan Theora juga.

Bisakah seseorang menjelaskan kepada saya mengapa VP9 jauh lebih lambat? Saya mencoba mesin yang berbeda yang memberi saya resullts serupa menggunakan Handbrake.


Jawaban:


11

libvpx-vp9adalah encoder yang jauh lebih lambat daripada libx264tetapi pengaturan default utas di ffmpeg (0 = otomatis) tidak efektif untuk libvpx. Pengaturan secara manual itu memberikan tonjolan kecepatan. misalnya

ffmpeg -i in.mp4 -c:v libvpx-vp9 -threads 4 out.mp4

Pada mesin 4-core, ketika meng-encode streaming H.264 1080-30p, saya mendapatkan benjolan dari 3.8 fpske 10 fps.


Orang juga harus menyebutkan bahwa ada preset kecepatan yang berbeda, yaitu -presetuntuk libx264dan -speeduntuk libvpx-vp9. Lihat ffmpeg -h full. Ini dapat membuat perbedaan, tetapi mereka juga mempengaruhi kualitas atau efisiensi kompresi.
slhck

1
Saya mencobanya pada mesin yang agak lama tapi saya menggunakan 4 utas karena kedua mesin tersebut adalah quad-core. The -speedpilihan tidak membuat perbedaan besar bagi saya
comfreak


3

VP9 adalah codec yang lebih kompleks yang memberikan kompresi yang lebih baik. Kompresi video / rasio kinerja cenderung eksponensial. Anda harus mengharapkan penggantian VP9 (AV1) menjadi lebih lambat.


1
Jadi dengan kata lain, meskipun codec "hanya" menghasilkan peningkatan ukuran yang relatif kecil, mungkin jauh lebih lambat? Apakah hasil yang saya dapatkan representatif?
comfreak

1
VP9 dapat mencapai 50% lebih efisien dalam hal kualitas, @comfreak. Saya tidak akan menyebut itu kecil. Anda tidak bisa hanya membandingkan ukuran file yang dihasilkan.
slhck

@ Slhck: Jadi Anda mengatakan bahwa 3MBit / s dapat menyandikan lebih banyak informasi asli daripada H.264 dan karenanya laju bit yang lebih rendah daripada bahan sumber di H.264 mungkin merupakan pilihan untuk mempercepat?
comfreak

1
@comfreak Menggunakan bitrate yang lebih rendah tidak akan secara otomatis meningkatkan kecepatan proses encoding. Saya hanya mengatakan bahwa ada pertukaran antara efisiensi dan kecepatan kompresi, dan banyak penyedia streaming misalnya lebih suka menginvestasikan waktu CPU untuk membuat aliran kualitas yang lebih tinggi pada bitrate keseluruhan yang lebih rendah, untuk menghemat ruang dan bandwidth. Menggunakan codec yang lebih efisien (seperti VP9 atau HEVC lebih dari H.264) juga membantu dalam hal itu.
slhck

Tetapi pada dasarnya, jika kecepatan adalah faktor yang paling penting bagi Anda, Anda harus tetap menggunakan codec yang lebih lama (mis., H.264), pengaturan awal yang kurang efisien, dan mungkin juga melihat ke dalam pengkodean berbantuan GPU, misalnya dengan NVENC.
slhck
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.