GPU có thể được sử dụng để mã hóa h264 không?


13

Tôi tự hỏi nếu tôi có một card đồ họa tốt hơn thì nó có thể tăng tốc mã hóa h264 trên máy của tôi bằng cách sử dụng phanh tay không?

Nếu vậy làm thế nào tôi có thể nói card đồ họa nào sẽ hỗ trợ này?

Tôi biết rằng GPU có thể thực hiện giải mã phần cứng của h264, nhưng không chắc chắn về mã hóa.


Liên quan: Nén video tăng tốc - bằng mọi cách, bạn muốn có thẻ NVIDIA cho việc này và sẵn sàng chi tiền.
slhck

Một bài đăng trên blog khác có liên quan: Mã hóa video của bạn bằng GPU của bạn
slhck

Đối với mã hóa h.264, phanh tay sử dụng bộ mã hóa phần mềm x264 (videolan) . Một số câu trả lời dưới đây ngụ ý phanh tay sử dụng ffmpeg, có thể sử dụng triển khai x264 hoặc hw (GPU). Mặc dù câu hỏi cũ này (nhưng vẫn có liên quan) có lẽ không phải là "làm thế nào để làm cho phanh tay nhanh hơn", mà là "làm thế nào để mã hóa h.264 nhanh hơn". Câu trả lời sẽ có thời hạn sử dụng (một số đã hết hạn); nhưng hiện tại, nếu thực hiện ML và / hoặc xử lý hàng loạt, bạn có thể phải khớp việc triển khai với phần cứng của mình
michael

fwiw, tôi thấy nhận xét này từ ffmeg thú vị: "Bộ mã hóa phần cứng thường tạo ra đầu ra có chất lượng thấp hơn đáng kể so với bộ mã hóa phần mềm tốt như x264, nhưng thường nhanh hơn và không sử dụng nhiều tài nguyên CPU. đầu ra có cùng chất lượng cảm nhận hoặc chúng tạo ra đầu ra với chất lượng cảm nhận thấp hơn ở cùng tốc độ bit.) "
michael

Câu trả lời:


7

Sử dụng Handbrake câu trả lời sẽ là không. Handbrake là một bộ mã hóa h.264 chỉ dành cho CPU, mặc dù hiện tại nó có thể sử dụng OpenCL để mở rộng video và có một số hỗ trợ cho DXVA để giải mã video.

Câu hỏi được liên kết bởi slhck có đề cập đến MediaCoder , nhưng nó yêu cầu card đồ họa Nvidia hoặc CPU Intel có lõi đồ họa thế hệ 2.

Có một vài sản phẩm cũ đã bị lỗi thời, cụ thể là Badaboom và phần mềm ATi Avivo.

Badaboom có thể sử dụng bộ xử lý đồ họa Nvidia và Intel để tăng tốc quá trình mã hóa nhưng hiện tại nó đã hết hạn sử dụng và không hỗ trợ các card đồ họa mới hơn.

ATi đã có bộ mã hóa video riêng được gọi là "Avivo" trước khi được sáp nhập vào Gói Codec AMD bao gồm Bộ chuyển đổi video AMD mặc dù nó không còn khả dụng.


Vì vậy, hiện tại tôi đang sử dụng CPU AMD, điều đó có nghĩa là điều này gây lãng phí thời gian cho tôi? Nó có thể là bất kỳ thẻ NVIDIA nào không - ồ vậy nó có hỗ trợ CUDA không?
peter

Tôi tìm thấy liên kết này, en.wikipedia.org/wiki/CUDA , gợi ý rằng khá nhiều thẻ NVIDIA hỗ trợ CUDA.
peter

Tôi đã cập nhật câu trả lời của mình với một liên kết đến gói phần mềm AMD có thể giúp bạn sử dụng GPU để mã hóa video, nhưng nó yêu cầu thẻ sê-ri HD2000 hoặc tốt hơn. Nếu bạn có CPU đặc biệt mạnh nhưng có card đồ họa ngân sách thì Handbrake vẫn có thể nhanh hơn.
Mokubai

Badaboom đang được kết thúc vào ngày 18 tháng 4 năm 2012.
HVS

2
Câu trả lời ở trên không / không còn đúng nữa.
totaam

4

x264 hiện hỗ trợ tăng tốc mã hóa OpenCL. Tốc độ bạn nhận được sẽ tăng bao nhiêu tùy thuộc vào hiệu suất của card đồ họa của bạn, trên GTS 450 của tôi, tôi không nhận được gì và với các thẻ chậm hơn, nó thực sự làm chậm quá trình mã hóa. Thẻ tốt hơn có thể giúp đỡ. Tất cả những gì bạn cần làm là thêm --opencl vào dòng lệnh x264. Tôi tin rằng phanh tay sử dụng cùng các thư viện x264 và cung cấp khả năng tăng tốc OpenCL tương tự trong các bản dựng mới hơn.


Tôi nên sử dụng tăng tốc mã hóa OpenCL như thế nào?
Dr.jacky

2

https://trac.ffmpeg.org/wiki/HWAccelIntro

FFmpeg cung cấp một hệ thống con để tăng tốc phần cứng.

Tăng tốc phần cứng cho phép sử dụng các thiết bị cụ thể (thường là card đồ họa> hoặc các thiết bị cụ thể khác) để thực hiện xử lý đa phương tiện. Điều này cho phép sử dụng phần cứng chuyên dụng để thực hiện tính toán đòi hỏi trong khi giải phóng CPU khỏi các tính toán như vậy. Thông thường khả năng tăng tốc phần cứng cho phép các thiết bị phần cứng cụ thể (thường là GPU) thực hiện các hoạt động liên quan đến giải mã và mã hóa luồng video hoặc lọc video.

Khi sử dụng FFmpeg công cụ, giải mã được hỗ trợ CTNH được bật bằng cách sử dụng thông qua -hwacceltùy chọn, cho phép giải mã cụ thể. Mỗi bộ giải mã có thể có các giới hạn cụ thể (ví dụ: bộ giải mã H.264 chỉ có thể hỗ trợ cấu hình cơ sở). Mã hóa hỗ trợ CTNH được kích hoạt thông qua việc sử dụng một bộ mã hóa cụ thể (ví dụ: nvenc_h264). Lọc xử lý có hỗ trợ CTNH chỉ được hỗ trợ trong một vài bộ lọc và trong trường hợp đó, bạn kích hoạt mã OpenCL thông qua tùy chọn bộ lọc.

Có một số API tiêu chuẩn tăng tốc phần cứng, một số trong số đó được FFmpeg hỗ trợ ở một mức độ nào đó.

Tùy chọn "-hwaccel auto" cho phép bạn chọn giải mã tăng tốc dựa trên phần cứng để sử dụng cho phiên mã hóa. Bạn có thể thêm thông số này bằng "tự động" trước khi nhập (nếu x264 của bạn được biên dịch với hỗ trợ OpenCL, bạn có thể thử thêm param -x264opts param), ví dụ:

ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output

Xin lỗi, nhưng tôi không thể nhớ cách liệt kê tất cả các tùy chọn có sẵn cho "-hwaccel".

Ngoài ra, bạn có thể thử điều này: https://wiki.archlinux.org/index.php/Hardware_video_accelutions


Nó không xuất hiện điều này đặc biệt trả lời câu hỏi, mặc dù nó có vẻ hữu ích. Còn về việc bạn thêm một số chi tiết cho thấy ffmpeg và các đối số của nó có thể giúp OP như thế nào.
music2myear

Câu trả lời này ngụ ý sử dụng ffmpeg thay vì phanh tay để mã hóa h.264, điều này có thể tốt, vì câu hỏi có lẽ chỉ là yêu cầu cách mã hóa nhanh nhất - và giả sử GPU sẽ kích hoạt điều này. Lưu ý rằng không phải tất cả các GPU đều mạnh như nhau (ví dụ: GPU tích hợp so với chuyên dụng) và CPU cũng có các tối ưu hóa mà các thư viện có thể sử dụng nếu thư viện được biên dịch để hỗ trợ nó. Vì vậy, "tăng tốc phần cứng" là con đường đúng đắn để đi xuống, cho dù đó là thông qua CPU hay GPU.
michael

0

Hiện tại, Handbrake hỗ trợ các bộ mã hóa tăng tốc phần cứng sau cho H.264 / AVC:

  1. Intel QuickSync (trên Windows và trên Linux). Điều này tương thích với ít nhất Sandybridge (Core thế hệ 2) dựa trên Intel với các dòng bộ xử lý tích hợp được kích hoạt và tiếp xúc với hệ điều hành. Phần cứng được đề xuất cho chất lượng mã hóa chấp nhận được: Haswell (dòng Core thế hệ thứ 4) và hơn thế nữa, đã đưa ra khái niệm về mức mục tiêu hạt mịn (TUs), các chức năng tìm kiếm (như chế độ mã hóa LA-BRC và ICQ ) với hiệu suất tốt hơn đáng kể. Xem hướng dẫn sử dụng từ tài liệu phanh tay ở đây .

  2. NVENC của NVIDIA : Điều này đòi hỏi ít nhất GPU sê-ri Kepler (GK +) của NVIDIA trở lên từ SKU tiêu dùng hiệu suất cao (sê-ri GTX) và các dòng sản phẩm chuyên nghiệp (GPU Quadro và Tesla dựa trên Kepler và hơn thế nữa). Điều này có sẵn trên cả Windows và Linux.

Lưu ý là với NVENC, bạn sẽ bị giới hạn một cách giả tạo tối đa hai phiên mã hóa đồng thời trên SKU tiêu dùng, trong khi đội hình chuyên nghiệp vẫn không bị ảnh hưởng bởi điều này. Để tham khảo về các khả năng của bộ mã hóa cụ thể, hãy tham khảo ma trận GPU . Để có hiệu suất và chất lượng bộ mã hóa tốt nhất, hãy sử dụng các bước lặp mới nhất của GPU PascalVolta .

Tùy chọn:

  1. Hỗ trợ mã hóa của AMD AMF cũng có sẵn trong các bản dựng hàng đêm hiện tại chỉ dành cho Windows. Một lưu ý đặc biệt về AMF của AMD (khai thác bộ mã hóa VCE được tích hợp trong phần cứng trong tất cả các GCN + SKU) là trên phần cứng mới hơn, như Polaris (dòng RX 400+) và Vega , một số điều chỉnh bộ mã hóa nâng cao cho H.264 / AVC đã không được chấp nhận khi họ giới thiệu hỗ trợ mã hóa HEVC. Những gì AMD bỏ rơi là mã hóa khung B, không hỗ trợ lượng tử hóa thích ứng (AQ), một tính năng mà các bộ mã hóa dựa trên phần cứng đã nói ở trên (QuickSync và NVENC) đã triển khai trong nhiều thế hệ không có hồi quy. Ngoài ra, hãy xem điều này trên các ghi chú liên quan đến số liệu thông lượng về những gì mong đợi.

Theo như sự hỗ trợ của Apple, đây là điều tốt nhất, dự kiến . Các VideoToolBox API, nơi thực hiện vượt quá phạm vi của Handbrake, cũng dường như có một bộ rất hạn chế về điều khiển. Ngay cả khi Handbrake chấp nhận nó ngược dòng, đừng mong đợi phép màu về khả năng duy trì và thông lượng.

Lưu ý rằng bạn có thể yêu cầu sử dụng bản dựng hàng đêm mới nhất để sử dụng các tính năng mã hóa mới nhất trên nền tảng của bạn, như hiện tại. Điều này chắc chắn sẽ thay đổi trong tương lai.

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.