So sánh hai tệp video để tìm ra tệp nào có chất lượng tốt nhất


30

Giả sử tôi có cùng một tài liệu video được mã hóa trong hai (hoặc nhiều) tệp. Tôi muốn chạy một số tiện ích trên chúng để chỉ ra rằng tập tin nào là "tốt nhất" về chất lượng. "Cơ bản" có nghĩa là tôi muốn nhận báo cáo so sánh các khía cạnh khác nhau (ví dụ: độ phân giải video, tốc độ lấy mẫu video, tốc độ lấy mẫu âm thanh, tốc độ bit âm thanh, v.v.), sau đó từng điểm một của họ.

Đó là về chức năng, nhưng để tiện ích đó thực sự có thể sử dụng được, nó phải là nguồn mở và dòng lệnh.


Để bắt đầu thu thập một số thông tin liên quan (không thực sự là giải pháp cho mỗi tiêu chí ở trên), có repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Đây là "công cụ chuyên nghiệp": nén .ru / video / quality_measure / lỗi . Nhưng nó không phải là nguồn mở và so sánh "bản gốc" và "bản sao", không chỉ 2 tệp không thiên vị.
pfalcon

Câu trả lời:


88

Tôi làm việc trong nghiên cứu chất lượng video và thật khó để đưa ra câu trả lời đơn giản cho câu hỏi của bạn. Những gì bạn muốn là một chương trình cung cấp cho bạn Điểm ý kiến ​​trung bình (MOS) của video, tức là một số từ 1 đến 5 hoặc từ 0 đến 100, tương ứng với chất lượng theo cảm nhận của con người.

Tại sao bạn không thể đơn giản so sánh bitrate / độ phân giải / vv.

Chỉ cần so sánh độ phân giải video sẽ không nói gì về chất lượng. Trong thực tế, nó có thể hoàn toàn sai lệch. Rip phim 1080p ở kích thước 700 MB có thể trông tệ hơn so với rip 720p ở 700 MB, vì trước đây, bitrate quá thấp, giới thiệu tất cả các loại tạo tác nén.

Điều tương tự cũng xảy ra khi so sánh bitrate ở các kích thước khung tương tự nhau, vì các bộ mã hóa khác nhau thực sự có thể cung cấp chất lượng tốt hơn với ít bitrate hơn hoặc ngược lại. Ví dụ, bản rip 720p 700 MB được sản xuất với XviD sẽ trông tệ hơn bản rip 700 MB được sản xuất với x264, vì bản sau hiệu quả hơn nhiều.

Bạn cũng sẽ phải xác định cách "điểm tích phân" cuối cùng (MOS) bao gồm các yếu tố chất lượng riêng lẻ. Đây chủ yếu phụ thuộc vào nhiều yếu tố bao gồm nhưng không giới hạn:

  • loại video bạn đang so sánh (phim hoạt hình, phim, tin tức, v.v.)
  • chiều dài của chúng
  • khán giả xem của họ
  • kích thước khung ban đầu của chúng
  • "chất lượng" ban đầu của chúng trước khi chúng được mã hóa

Chúng ta thậm chí không nói về cách con người cảm nhận các video. Giả sử bạn có một người bạn đang xem phim vì anh ấy hoặc cô ấy thích các chi tiết sắc nét và độ phân giải chuyển động cao. Họ sẽ bị chỉ trích nhiều hơn khi thấy một bản rip chất lượng thấp hơn một người bạn chỉ xem phim cho nội dung của họ . Họ có thể sẽ không quan tâm đến chất lượng quá nhiều, miễn là bộ phim hài hước hoặc giải trí.

Có nhiều loại số liệu chất lượng video khác nhau!

Hãy để tôi cung cấp cho bạn một danh sách những gì tôi nghĩ là được sử dụng phổ biến nhất để đánh giá cơ bản chất lượng video hiện nay. Có tồn tại một số số liệu chất lượng video, có thể được phân loại theo loại thông tin được sử dụng để xác định chất lượng. Về nguyên tắc và nói rất đơn giản, bạn phân biệt giữa các điều sau đây:

  • Số liệu không tham chiếu - Họ chỉ có một video làm đầu vào và đầu ra điểm chất lượng. Trong trường hợp của bạn, bạn đang tìm kiếm một số liệu không tham chiếu , bởi vì bạn thường không có video gốc. Một số liệu như vậy sẽ lấy một video và xuất một điểm chất lượng. Dưới đây là một số ví dụ về các vấn đề mà số liệu NR sẽ phát hiện (ví dụ như làm mờ).

  • Số liệu tham chiếu đầy đủ - Chúng có hai đầu vào, một là video đầu vào ban đầu và một là video được mã hóa. Ví dụ: bạn có thể lấy phim DVD, sau đó tạo hai trích xuất từ ​​phim đó và sử dụng số liệu tham chiếu đầy đủ để ước tính tổn thất chất lượng giữa phim DVD gốc (tức là video MPEG-2 trên đĩa) và trích xuất của bạn. Điều này sẽ mất nhiều thời gian để tính toán, nhưng nó chính xác hơn.

Các số liệu trên xem xét chất lượng mã hóa video, nhưng cũng có các số liệu kết hợp các vấn đề như thời gian tải ban đầu và các sự kiện bị đình trệ khi truyền phát video (ví dụ: ITU-T P.1203 ).

Tôi có thể sử dụng phần mềm nào?

Dưới đây là danh sách các công cụ sẵn sàng sử dụng mà bạn có thể sử dụng để kiểm tra một số số liệu (một số chỉ dành cho Windows):

Bây giờ có những số liệu nào?

PSNR, PSNR-HVS và PSNR-HVS-M

Để bắt đầu, PSNR (Tỷ lệ tín hiệu trên tạp âm cực đại) là một phương pháp rất đơn giản để sử dụng nhưng hơi kém để đánh giá chất lượng video. Nó hoạt động tương đối tốt mặc dù đối với hầu hết các ứng dụng, nhưng nó không đưa ra ước tính tốt về cách con người cảm nhận chất lượng.

PSNR có thể được tính theo từng khung hình, và sau đó bạn sẽ lấy trung bình PSNR của toàn bộ chuỗi video để có được điểm số cuối cùng. PSNR cao hơn là tốt hơn.

PSNR-HVS và PSNR-HVS-M là các phần mở rộng của PSNR cố gắng mô phỏng nhận thức thị giác của con người, vì vậy chúng phải chính xác hơn. VQMTMSU có thể tính toán PSNR, PSNR-HVS và PSNR-HVS-M giữa hai video.

SSIM, MS-SSIM

Tương tự cấu trúc (SSIM) dễ dàng tính toán như PSNR và nó mang lại kết quả chính xác hơn, nhưng vẫn dựa trên cơ sở từng khung hình. Bạn sẽ tìm thấy một số triển khai trong liên kết Wikipedia hoặc bạn có thể sử dụng VQMT hoặc MSU . Các công cụ này cũng bao gồm MS-SSIM, mang lại kết quả tốt hơn (nghĩa là đại diện hơn) so với SSIM, cũng như một vài công cụ phái sinh khác.

Các kết quả phải tương tự như PSNR. Một lần nữa, bạn cần so sánh một tham chiếu với một video được xử lý để làm việc này và cả hai video phải có cùng kích thước.

VMAF

Đánh giá đa phương thức video Fusion của Netflix là một bộ công cụ để tính toán chất lượng video dựa trên một số số liệu hiện có, sau đó được các phương pháp học máy hợp nhất thành điểm số cuối cùng từ 0 đến 100. Netflix đã giải thích toàn bộ vấn đề ở đây :

[VMAF] dự đoán chất lượng chủ quan bằng cách kết hợp nhiều số liệu chất lượng cơ bản. Lý do cơ bản là mỗi số liệu cơ bản có thể có điểm mạnh và điểm yếu riêng liên quan đến các đặc điểm nội dung nguồn, loại tạo tác và mức độ biến dạng. Bằng cách 'kết hợp' các số liệu cơ bản vào một số liệu cuối cùng bằng thuật toán học máy - trong trường hợp của chúng tôi, bộ hồi quy Máy Vector hỗ trợ (SVM) - gán trọng số cho từng số liệu cơ bản, số liệu cuối cùng có thể bảo toàn tất cả các điểm mạnh của từng số liệu riêng lẻ và cung cấp một số điểm cuối cùng chính xác hơn.

Bạn cũng có thể sử dụng ffmpegđể tính điểm VMAF .

VQM

Các Chất lượng Metric video đã được xác nhận trong các video chất lượng Experts Group (VQEG) và là một thuật toán đầy đủ tài liệu tham khảo rất tốt. Bạn có thể tải xuống VQM miễn phí hoặc sử dụng triển khai từ MSU.

Khi bạn đăng ký và tải xuống, bạn muốn sử dụng Mô hình chung NTIA hoặc Mô hình chất lượng video với độ trễ khung biến .

Số liệu khác

  • PEVQ là một số liệu tham chiếu đầy đủ được tiêu chuẩn hóa theo ITU-T J.246. Nó nhằm vào các tín hiệu đa phương tiện, nhưng không phải video HD.
  • VQuad-HD là một số liệu tham chiếu đầy đủ khác được tiêu chuẩn hóa là ITU-T J.341. Vì nó mới hơn nên phù hợp hơn với video HD.

Cả hai đều là giải pháp thương mại và bạn sẽ không tìm thấy phần mềm để tải xuống cho họ.

Ngoài ra còn có một số tiêu chuẩn ITU về các số liệu không tham chiếu, chẳng hạn như ITU-T P.1201ITU-T P.1202 , hoạt động với các tham số từ luồng bit để truyền phát IPTV. ITU-T P.1203 có thể được sử dụng cho các trường hợp phát trực tiếp thích ứng.


Tóm lược

Nếu bạn chỉ tìm cách so sánh các tiêu chí đo lường khách quan đơn giản như:

  • Kích thước khung
  • Tốc độ bit
  • Khung hình mỗi giây
  • Độ phân giải video

Một cuộc gọi đơn giản ffmpeg -isẽ cung cấp cho bạn tất cả các chi tiết bạn cần lúc đầu. Cũng có một cái nhìn vào các -vstatstùy chọn. Sau đó bạn có thể tóm tắt điều này trong một bảng tính. Lưu ý rằng khi bạn mã hóa video, x264chẳng hạn sẽ ghi nhật ký các thứ như PSNR thẳng vào một tệp nếu bạn cần, để bạn có thể sử dụng các giá trị này sau.

Về cách cân nhắc các tiêu chí này, có lẽ bạn nên nhấn mạnh tốc độ bit - nhưng chỉ khi bạn biết rằng codec là như nhau. Nói chung, bạn có thể nói rằng khi cả hai video sử dụng x264, video nào có tốc độ bit cao hơn sẽ tốt hơn. Thậm chí, nói chung, bạn nên chọn độ phân giải thấp hơn khi bạn có hai video có cùng tốc độ bit, vì sự xuống cấp do nâng cấp không tệ như sự xuống cấp do tốc độ bit thấp.

So sánh các codec khác nhau theo tốc độ bit của họ là không thể trừ khi bạn biết thêm về nội dung và các thiết lập mã hóa cá nhân. Tốc độ khung hình cũng là một điều rất chủ quan và nên được tính vào số đo của bạn nếu nó ở dưới 25 Hz.

Tóm lại, hãy nhấn mạnh vào bitrate nếu đó là thứ duy nhất bạn có. Đừng quên sử dụng đôi mắt của bạn nữa :)


Trước hết, với tư cách là tác giả ban đầu của câu hỏi, tôi xin lỗi vì đã không bình luận trước đó. Bài viết thực sự tuyệt vời và được đánh giá cao. Thật không may, tôi không thể chấp nhận nó là câu trả lời cho câu hỏi ban đầu của tôi. Lý do là: Tôi cố tình đăng câu hỏi ở đây chứ không phải trên StackOverflow, vì tôi muốn đề xuất về công cụ sẵn sàng sử dụng. Có thể là một câu hỏi về cách viết công cụ như vậy, câu trả lời của bạn sẽ là người chiến thắng tuyệt đối. Nhưng xin lỗi, tôi không thể viết mọi thứ tôi cần từ đầu, vì vậy hãy để người dùng trong tôi đặt câu hỏi và mong đợi câu trả lời (có thể không phải hôm qua hoặc hôm nay, có thể trong tương lai ;-)
pfalcon

1
Tuyệt vời, thông tin trả lời. Mặc dù đó không phải là một câu trả lời trực tiếp, tôi muốn thấy mọi người dành thời gian của họ để viết tài liệu thông tin như vậy. +1
SuperDuck

1

Tôi không biết về bất kỳ công cụ nào sẽ cung cấp cho bạn đề xuất hoặc điểm số cuối cùng, nhưng bằng cách sử dụng FFmpeg , bạn có thể xuất tất cả các chi tiết bạn đã liệt kê trong câu hỏi.

Trên dòng lệnh, ffmpeg -i sẽ liệt kê thông tin từ video. Từ đó, bạn có thể viết một kịch bản để phân tích thông tin và cân nhắc nó khi bạn thấy phù hợp.


Cảm ơn, vâng, đó là những gì tôi đã làm trong vài giờ trước khi quyết định hỏi liệu có công cụ "ma thuật" nào tốt hơn không ;-)
pfalcon
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.