Thông số nén video H.264 / H.265 nào cung cấp chất lượng tương đương DVD với độ nén tốt hơn?


11

Tôi đã có một hộp đĩa video DVD mà tôi tìm cách loại bỏ trong khi tôi muốn giữ các video bằng cách chuyển đổi chúng thành các tệp MP4 để lưu trữ chúng trên ổ cứng.

Xem xét tính ưu việt của thuật toán nén H.264 AVC và H.265 HEVC hiện đại so với MPEG2 tiêu chuẩn DVD Tôi hy vọng sẽ tiết kiệm dung lượng ổ cứng bằng cách nén video trong khi tiết kiệm ~ 99% chất lượng ban đầu của DVD.

  • Tham số nén H.264 (FFMPEG + libx264)
  • Tham số nén H.265 (FFMPEG + libx265)

Tôi có nên sử dụng để đạt được mục tiêu của mình?

Theo các tham số, ý tôi là các giá trị CBR / CRF, giá trị đặt trước (vui lòng không sử dụng giả dược / giả dược), cờ, v.v.

PS: Tôi muốn hạn chế trường hợp sử dụng -pix_fmt yuv420p-profile:v baseline -level 3.0để đảm bảo tệp phát OK trên tất cả các thiết bị, kể cả các thiết bị cũ dựa trên chip giải mã phần cứng cũ. Việc sử dụng tần số khung hình I tăng (sử dụng -gtham số) cũng được mong muốn để tạo điều kiện cho việc sử dụng phương tiện tốc độ thấp và độ trễ cao.

Đối với HEVC, tôi cũng thích sử dụng các tham số đảm bảo phát lại được tăng tốc phần cứng mượt mà trên các thiết bị hỗ trợ nhưng tôi không có ý tập trung vào ràng buộc này vì tôi chưa thấy bất kỳ thiết bị nào cung cấp H.265 được tăng tốc phần cứng giải mã cả

Câu trả lời:


14

Lưu ý rằng đối với điều này, bạn nên luôn luôn sử dụng phiên bản ffmpeg mới nhất và tốt nhất là tự biên dịch nó . Điều này cho phép bạn truy cập vào libx265 và libfdk-aac gần đây nhất để mã hóa âm thanh.

Ngoài ra, việc tiết kiệm tốc độ dữ liệu sẽ khá quyết liệt nếu bạn chuyển từ DVD ~ 10 MBit / s sang khoảng 1 CÁ2 MBit / giây cho video H.264 và 0,5 đùa1 MBit / giây cho video H.265. Thay đổi chất lượng trong các bước dưới đây có thể ảnh hưởng đến bitrate, nhưng vẫn giảm đáng kể dữ liệu.

H.264

Đối với kiểm soát chất lượng / tốc độ, bạn muốn sử dụng chế độ CRF trong libx264 thay vì tốc độ bit không đổi. Sử dụng CRF đảm bảo rằng chất lượng trung bình được giữ nguyên, không phụ thuộc vào độ phân giải video gốc hoặc độ phức tạp của nó. Tốc độ bit không đổi chỉ thực sự hữu ích nếu bạn bị hạn chế bởi phương tiện truyền (ví dụ: tốc độ ổ cứng, thông lượng Internet).

Chọn giá trị CRF là phần khó khăn. Nó đòi hỏi bạn phải nhìn vào đầu ra. Mặc định cho libx264 (23) cung cấp sự đánh đổi khá tốt giữa kích thước và chất lượng. Nhưng do nguồn gốc của bạn đã được nén (và không có chất lượng rất tốt so với Blu-ray), bạn có thể muốn thay đổi CRF thấp hơn một chút, chẳng hạn như 20. Điều này sẽ tăng tốc độ bit cần thiết lên khoảng một phần ba .

Chọn cài đặt trước theo thời gian bạn muốn chờ đợi. slowcó vẻ như một giá trị tốt ở đây

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

Bộ mã hóa AAC ffmpeg tích hợp có thể được sử dụng nếu libfdk-aac không khả dụng. Sử dụng -c:a aac -strict experimental -b:a 128kthay vì -c:a libfdk_aac -vbr 4.

H.265

Nghiên cứu cho thấy rằng sử dụng HEVC sẽ giúp tiết kiệm bitrate tới 74% so với H.264. Điều này dựa trên dữ liệu xem chủ quan của các chuỗi Ultra-HD. Tất nhiên, nó phụ thuộc vào độ phức tạp theo thời gian của nội dung nguồn và lượng dữ liệu được lưu sẽ không cao đối với các chuỗi khó mã hóa. Dù bằng cách nào bạn cũng có thể nói rằng giảm 50% dữ liệu là hoàn toàn có thể.

CRF mặc định cho libx265 là 28. Sử dụng cùng một nội dung nguồn, nó dẫn đến khoảng một nửa tốc độ bit so với libx264 tại CRF 23. Điều này không liên quan đến bitrate thực tế, tức là, nếu phiên bản H.264 mất 1,5 MBit / s, sau đó H.265 sẽ sử dụng khoảng 750 kBit / s, nhưng đó là 750 kBit / s so với 350 kBit / s cho một chuỗi khác. Tôi đã chạy nó trên một vài chuỗi ở độ phân giải DVD-PAL và không thể nói sự khác biệt về chất lượng.

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

Để biết thêm thông tin, đây là các tài nguyên có liên quan:


Cảm ơn bạn đã trả lời tốt. Keyint thực tế có nghĩa là gì?
Ivan

1
Trong keyintx264 / x265 là khoảng giữa các khung IDR, tức là khoảng giữa các khung hình chính mà bộ giải mã có thể làm mới. Ở giữa, có thể có các khung hình I không phải khung hình chính, ví dụ như khi xảy ra cắt cảnh. Nó tương đương với -gtham số nếu tôi không nhầm.
slhck

BTW, @slhck, một điều làm tôi ngạc nhiên trong câu trả lời của bạn - sự chú ý mà bạn dành cho việc lựa chọn thư viện mã hóa AAC. Tôi đã từng nghĩ rằng tất cả chúng đều giống nhau và không có chút khác biệt nào, rằng mọi thứ đều đơn giản trong phần âm thanh (chỉ cần chọn bitrate và đi và tất cả các codec mất mát lớn như MP3, AAC và Vorbis đều phát ra âm thanh gần như hoặc chính xác giống nhau ở tốc độ 128 kbps trở lên). Bạn có nghĩa là thực sự có sự khác biệt đáng chú ý giữa libfdk-aac và aac thông thường?
Ivan

1
@Ivan Các bản dựng Zeranoe chắc chắn sẽ cho phép bạn làm -c:a aac -strict experimentalnhư được chỉ ra trong câu trả lời của tôi. Và tôi đồng ý, tôi sẽ không thử xây dựng nó trên Windows.
slhck

2
@Ivan (Nhận xét đầu tiên): Xem ffmpeg-wiki : "Dựa trên chất lượng được sản xuất từ ​​cao đến thấp: libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1Chỉ dành cho AAC: (Vì nó hơi khó hiểu, với 3 bộ mã hóa có sẵn): libfdk_aac > aac > libfaacDấu> = có nghĩa là lớn hơn hoặc giống nhau chất lượng."
Gole Ramblar
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.