Tại sao mã hóa VP8 / 9 quá chậm so với H.264?


11

Gần đây tôi muốn dùng thử codec Webm VP8 và VP9 nhưng khi tôi chạy ffmpegmã hóa tệp MP4 H.264 sang một trong hai codec khác, tôi nhận ra rằng mã hóa chậm hơn (gần một bậc độ lớn).

Một video 1080p30 từ H.264 đến VP9 với tốc độ 3 MBit / giây đang được mã hóa ở khoảng 6-7 khung hình / giây trong khi video tương tự mã hóa ở khoảng 40 khung hình / giây đến H.264. Tôi đã sử dụng libvpx-vp9codec trong ffmpegđịnh dạng VP9. Tôi cũng nhận được kết quả tương tự cho VP8 và Theora.

Ai đó có thể giải thích cho tôi tại sao VP9 chậm hơn nhiều không? Tôi đã thử một cỗ máy khác mang lại cho tôi những chiếc máy tương tự bằng Handbrake.


Câu trả lời:


11

libvpx-vp9là một bộ mã hóa chậm hơn nhiều so với libx264nhưng các thiết lập mặc định của các luồng trong ffmpeg (0 = auto) không hiệu quả đối với libvpx. Cài đặt thủ công nó cho một vết sưng tốc độ. ví dụ

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

Trên máy 4 lõi, khi mã hóa luồng H.264 1080-30p, tôi nhận được một cú va chạm từ 3.8 fpsđến 10 fps.


Người ta cũng nên đề cập rằng có các cài đặt trước tốc độ khác nhau, nghĩa là, -presetcho libx264-speedcho libvpx-vp9. Xem ffmpeg -h full. Những thứ này có thể tạo ra sự khác biệt, nhưng chúng cũng ảnh hưởng đến chất lượng hoặc hiệu quả nén.
slhck

1
Tôi đã thử nó trên các máy khá cũ nhưng tôi đã sử dụng 4 luồng vì cả hai máy đều là lõi tứ. Các -speedtùy chọn không tạo sự khác biệt rất lớn đối với tôi
comfreak


3

VP9 là một codec phức tạp hơn cung cấp khả năng nén tốt hơn. Tỷ lệ nén / hiệu suất video có xu hướng theo cấp số nhân. Bạn nên thay thế VP9 (AV1) thậm chí còn chậm hơn.


1
Vì vậy, nói cách khác, mặc dù codec "chỉ" tạo ra sự cải thiện kích thước tương đối nhỏ, nó có thể chậm hơn nhiều? Là kết quả tôi có đại diện?
comfreak

1
VP9 có thể hiệu quả hơn tới 50% về chất lượng, @comfreak. Tôi sẽ không gọi đó là nhỏ. Bạn không thể chỉ so sánh kích thước tập tin kết quả.
slhck

@slhck: Vì vậy, bạn đang nói rằng 3MBit / s có thể mã hóa nhiều thông tin gốc hơn H.264 và do đó tốc độ bit thấp hơn so với tài liệu nguồn trong H.264 có thể là một tùy chọn để tăng tốc mọi thứ?
comfreak

1
@comfreak Sử dụng tốc độ bit thấp hơn sẽ không tự động tăng tốc độ của quá trình mã hóa. Tôi chỉ nói rằng có một sự đánh đổi giữa hiệu suất và tốc độ nén, và nhiều nhà cung cấp phát trực tuyến chẳng hạn sẽ đầu tư thời gian của CPU để tạo ra các luồng chất lượng cao hơn với tốc độ bit thấp hơn, để tiết kiệm không gian và băng thông. Sử dụng các codec hiệu quả hơn (như VP9 hoặc HEVC trên H.264) cũng giúp ích trong vấn đề đó.
slhck

Nhưng về cơ bản, nếu tốc độ là yếu tố quan trọng nhất đối với bạn, bạn nên gắn bó với các codec cũ hơn (ví dụ: H.264), các cài đặt trước ít hiệu quả nén hơn và có lẽ cũng xem xét mã hóa hỗ trợ GPU, ví dụ như với NVENC.
slhck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.