GPU สามารถใช้เพื่อเข้ารหัส h264 ได้หรือไม่?


13

ฉันสงสัยว่าถ้าฉันได้การ์ดกราฟิกที่ดีกว่านี้จะสามารถเพิ่มความเร็วในการเข้ารหัส h264 บนเครื่องของฉันโดยใช้เบรกมือหรือไม่?

ถ้าเป็นเช่นนั้นฉันจะรู้ได้อย่างไรว่าการ์ดกราฟิกตัวใดที่สนับสนุนเรื่องนี้

ฉันรู้ว่า GPU สามารถถอดรหัสฮาร์ดแวร์ของ h264 แต่ไม่แน่ใจเกี่ยวกับการเข้ารหัส


ที่เกี่ยวข้อง: การบีบอัดวิดีโอเร่งความเร็ว - ในทางใดทางหนึ่งคุณต้องการมีการ์ด NVIDIA สำหรับสิ่งนี้และยินดีที่จะใช้จ่ายเงิน
slhck

อีกโพสต์บล็อกที่เกี่ยวข้อง: เข้ารหัสวิดีโอของคุณโดยใช้ GPU ของคุณ
slhck

สำหรับh.264 เข้ารหัสเบรกใช้ซอฟต์แวร์เข้ารหัสx264 (videolan) บางคำตอบด้านล่างบ่งบอกถึงเบรกมือใช้ ffmpeg ซึ่งสามารถใช้การปรับใช้ x264 หรือ hw (GPU) แม้ว่าคำถามเก่า (แต่ยังมีความเกี่ยวข้อง) อาจไม่ได้ถามว่า "ทำอย่างไรให้เบรกมือเร็วขึ้น" แต่แทนที่จะเป็น "ทำอย่างไรให้การเข้ารหัส h.264 เร็วขึ้น" คำตอบจะมีอายุการเก็บ (บางส่วนหมดอายุแล้ว); แต่สำหรับตอนนี้ถ้าทำ ML และ / หรือชุดการประมวลผลคุณอาจจะต้องตรงกับการดำเนินงานกับฮาร์ดแวร์ของคุณ
ไมเคิล

fwiw ฉันพบความคิดเห็นนี้จาก ffmeg ที่น่าสนใจ: "ตัวเข้ารหัสฮาร์ดแวร์มักจะสร้างผลลัพธ์ที่มีคุณภาพต่ำกว่าตัวเข้ารหัสซอฟต์แวร์ที่ดีอย่าง x264 แต่โดยทั่วไปจะเร็วกว่าและไม่ใช้ทรัพยากร CPU มาก (นั่นคือพวกเขาต้องการบิตเรตที่สูงกว่า เอาท์พุทที่มีคุณภาพการรับรู้ที่เหมือนกันหรือพวกเขาทำผลผลิตที่มีคุณภาพการรับรู้ที่ต่ำกว่าที่บิตเรตเดียวกัน) "
ไมเคิล

คำตอบ:


7

การใช้ HandBrake คำตอบจะไม่ Handbrake เป็นตัวเข้ารหัส h.264 ที่ใช้ CPU เท่านั้นถึงตอนนี้ สามารถใช้ OpenCLสำหรับการปรับขนาดวิดีโอและรองรับ DXVA สำหรับการถอดรหัสวิดีโอ

คำถามที่เชื่อมโยงโดย slhck กล่าวถึงMediaCoderแต่ต้องใช้กราฟิกการ์ด Nvidia หรือ Intel CPU ที่มีคอร์กราฟิกรุ่นที่ 2

มีผลิตภัณฑ์รุ่นเก่าสองสามรุ่นที่ล้าสมัยโดยเฉพาะซอฟต์แวร์ Badaboom และซอฟต์แวร์ ATi Avivo

Badaboomซึ่งสามารถใช้ตัวประมวลผลกราฟิก Nvidia และ Intel เพื่อเพิ่มความเร็วในการเข้ารหัส แต่ตอนนี้มันหมดอายุแล้วและไม่รองรับกราฟิกการ์ดรุ่นใหม่

ATi มีตัวเข้ารหัสวิดีโอของตัวเองที่เคยถูกเรียกว่า "Avivo" ก่อนที่จะถูกรวมเข้ากับแพ็คเกจ Codec ของ AMD ซึ่งรวมถึงตัวแปลงวิดีโอของ AMD แม้ว่าจะไม่สามารถใช้งานได้อีกต่อไป


ดังนั้นตอนนี้ฉันใช้ CPU AMD นั่นหมายความว่านี่เป็นการเสียเวลาสำหรับฉันหรือเปล่า สามารถเป็นการ์ด NVIDIA ได้หรือไม่ - ดังนั้นจึงต้องรองรับ CUDA
เตอร์

ฉันพบลิงค์นี้en.wikipedia.org/wiki/CUDAซึ่งแสดงให้เห็นว่าการ์ด NVIDIA ค่อนข้างมากรองรับ CUDA
เตอร์

ฉันได้อัปเดตคำตอบของฉันพร้อมลิงก์ไปยังชุดซอฟต์แวร์ AMD ที่อาจช่วยให้คุณใช้ GPU เพื่อเข้ารหัสวิดีโอ แต่ต้องใช้การ์ดชุด HD2000 หรือดีกว่า หากคุณมี CPU ที่ทรงพลังเป็นพิเศษ แต่การ์ดกราฟิกราคาประหยัด Handbrake อาจยังเร็วกว่า
Mokubai

Badaboom กำลังจะหมดอายุเมื่อวันที่ 4/18/2012
HVS

2
คำตอบข้างต้นไม่ถูกต้อง / ไม่ถูกต้องอีกต่อไป
totaam

4

x264รองรับการเร่งความเร็วการเข้ารหัสของ OpenCL ความเร่งที่คุณได้รับจะขึ้นอยู่กับประสิทธิภาพของการ์ดแสดงผลของคุณใน GTS 450 ของฉันฉันไม่ได้รับเลย บัตรที่ดีกว่าอาจช่วยได้ สิ่งที่คุณต้องทำคือเพิ่ม --opencl ไปยังบรรทัดคำสั่ง x264 ฉันเชื่อว่าเบรกมือใช้ประโยชน์จากไลบรารี่ x264 เดียวกันและเสนอการเร่งความเร็ว OpenCL แบบเดียวกันในบิลด์ที่ใหม่กว่า


ฉันจะใช้การเร่งความเร็วการเข้ารหัสของ OpenCL ได้อย่างไร
Dr.jacky

2

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

FFmpeg จัดเตรียมระบบย่อยสำหรับการเร่งด้วยฮาร์ดแวร์

การเร่งด้วยฮาร์ดแวร์ช่วยให้สามารถใช้อุปกรณ์เฉพาะ (โดยปกติคือการ์ดกราฟิก> หรืออุปกรณ์เฉพาะอื่น ๆ ) เพื่อดำเนินการประมวลผลมัลติมีเดีย สิ่งนี้อนุญาตให้ใช้ฮาร์ดแวร์เฉพาะเพื่อทำการคำนวณที่เรียกร้องในขณะที่ปลดปล่อย CPU จากการคำนวณดังกล่าว โดยทั่วไปการเร่งด้วยฮาร์ดแวร์ช่วยให้อุปกรณ์ฮาร์ดแวร์เฉพาะ (โดยทั่วไปคือ GPU) เพื่อดำเนินการที่เกี่ยวข้องกับการถอดรหัสและเข้ารหัสสตรีมวิดีโอหรือการกรองวิดีโอ

เมื่อใช้ FFmpeg เครื่องมือการถอดรหัสแบบช่วย HW จะถูกเปิดใช้งานโดยใช้-hwaccelตัวเลือกซึ่งเปิดใช้งานตัวถอดรหัสเฉพาะ ตัวถอดรหัสแต่ละตัวอาจมีข้อ จำกัด เฉพาะ (ตัวอย่างเช่นตัวถอดรหัส H.264 อาจรองรับโปรไฟล์พื้นฐานเท่านั้น) การเข้ารหัส HW-assisted ถูกเปิดใช้งานผ่านการใช้ตัวเข้ารหัสเฉพาะ (ตัวอย่างเช่น nvenc_h264) การกรองการประมวลผลที่ได้รับการสนับสนุนจาก HW ได้รับการสนับสนุนในตัวกรองเพียงไม่กี่ตัวเท่านั้นและในกรณีนี้คุณเปิดใช้งานรหัส OpenCL ผ่านตัวเลือกตัวกรอง

มี API มาตรฐานการเร่งความเร็วฮาร์ดแวร์หลายตัวซึ่งบางตัวรองรับ FFmpeg ในระดับหนึ่ง

ตัวเลือก "-hwaccel auto" ช่วยให้คุณเลือกการถอดรหัสแบบเร่งด้วยฮาร์ดแวร์เพื่อใช้สำหรับเซสชันการเข้ารหัส คุณสามารถเพิ่มพารามิเตอร์นี้ด้วย "อัตโนมัติ" ก่อนที่จะป้อนข้อมูล (หาก x264 ของคุณรวบรวมด้วยการสนับสนุน OpenCL คุณสามารถลองเพิ่ม -x264opts พารามิเตอร์) ตัวอย่างเช่น:

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

ขออภัยฉันจำวิธีแสดงรายการตัวเลือกที่ใช้ได้ทั้งหมดสำหรับ "-hwaccel" ไม่ได้

นอกจากนี้คุณสามารถลองสิ่งนี้: https://wiki.archlinux.org/index.php/Hardware_video_acceleration


ไม่ปรากฏว่าสิ่งนี้ตอบคำถามโดยเฉพาะแม้ว่ามันจะมีประโยชน์ วิธีการเกี่ยวกับคุณเพิ่มรายละเอียดบางอย่างที่แสดงให้เห็นว่า ffmpeg และเป็นข้อโต้แย้งสามารถช่วย OP
music2myear

คำตอบนี้แสดงถึงการใช้ ffmpeg แทน handbrake สำหรับการเข้ารหัส h.264 ซึ่งน่าจะดีเพราะคำถามอาจขอแค่วิธีที่เร็วที่สุดในการเข้ารหัส - และ presum GPU จะเปิดใช้งานสิ่งนี้ โปรดทราบว่า GPU บางตัวนั้นมีความแรงเท่ากัน (เช่น GPU ในตัวแบบรวมและโดยเฉพาะ) และ CPU ยังมีการปรับแต่งที่ไลบรารีอาจใช้ถ้าไลบรารีถูกคอมไพล์เพื่อรองรับ ดังนั้น "การเร่งความเร็วฮาร์ดแวร์" เป็นเส้นทางที่ถูกต้องที่จะลงไม่ว่าจะผ่าน CPU หรือ GPU
ไมเคิล

0

ในปัจจุบัน Handbrake สนับสนุนตัวเข้ารหัสเร่งฮาร์ดแวร์ต่อไปนี้สำหรับ H.264 / AVC:

  1. Intel QuickSync (บน Windows และบน Linux) สิ่งนี้สามารถใช้งานร่วมกับSandybridge (รุ่นที่ 2 รุ่น Core) อย่างน้อยที่สุดของ Intel - สายโปรเซสเซอร์ซีรีส์ที่เปิดใช้งานกราฟิกในตัวและเปิดรับระบบปฏิบัติการ ฮาร์ดแวร์ที่แนะนำสำหรับคุณภาพการเข้ารหัสที่ยอมรับได้: Haswell (รุ่นที่ 4 Core-series) และสูงกว่าซึ่งนำเสนอแนวคิดของระดับเป้าหมายที่ละเอียด (TUs) ฟังก์ชั่น lookahead (เช่นโหมดการเข้ารหัส LA-BRC และ ICQ ) ด้วยประสิทธิภาพที่ดีขึ้นอย่างมาก ดูคู่มือการใช้งานจากเอกสารเบรกที่นี่

  2. NVIDIA's NVENC : สิ่งนี้ต้องการGPU ซีรีส์Kepler (GK +) อย่างน้อยของ NVIDIAและสูงกว่าจาก SKU ของผู้ใช้ประสิทธิภาพสูง (GTX-series) และผู้เล่นระดับมืออาชีพ (Quadro และ Tesla GPU ตามเคปเลอร์และที่อื่น ๆ ) มีทั้ง Windows และ Linux

สิ่งที่ควรทราบคือเมื่อใช้ NVENC คุณจะถูก จำกัด ด้วยการเข้ารหัสสองช่วงพร้อมกันใน SKU ของผู้บริโภคในขณะที่ผู้เล่นตัวจริงจะไม่ได้รับผลกระทบใด ๆ สำหรับการอ้างอิงของคุณเกี่ยวกับความสามารถในการเข้ารหัสเฉพาะอ้างถึงเมทริกซ์ GPU เพื่อประสิทธิภาพและคุณภาพของตัวเข้ารหัสที่ดีที่สุดให้ทำตามการทำซ้ำล่าสุดของPascalและVolta GPU

เลือก:

  1. การสนับสนุนการเข้ารหัสของ AMD AMFนั้นมีให้ในรุ่นต่อคืนปัจจุบันสำหรับ Windows เท่านั้น หมายเหตุพิเศษเกี่ยวกับ AMF ของ AMD (ที่แปลงเป็นตัวเข้ารหัส VCE ที่สร้างไว้ในฮาร์ดแวร์ในGCN + SKU ทั้งหมด) คือฮาร์ดแวร์ใหม่เช่นPolaris (RX 400+ series) และVega การปรับจูนเข้ารหัสขั้นสูงสำหรับ H.264 / AVC เลิกใช้แล้วเนื่องจากพวกเขาแนะนำการสนับสนุนการเข้ารหัส HEVC สิ่งที่ AMD ลดลงคือการเข้ารหัส B-frame โดยไม่สนับสนุนการปรับปริมาณ (AQ) ซึ่งเป็นคุณสมบัติที่ encoders ที่ใช้ฮาร์ดแวร์ดังกล่าว (QuickSync และ NVENC) ได้นำมาใช้สำหรับคนรุ่นที่ไม่มีการถดถอย ดูสิ่งนี้ได้จากหมายเหตุเกี่ยวกับตัววัดปริมาณงานในสิ่งที่คาดหวัง

เท่าที่สนับสนุนแอปเปิ้ลเป็นห่วงนี้เป็นที่ที่ดีที่สุดอย่างไม่แน่นอน VideoToolBox API ที่ดำเนินการเกินขอบเขตของ Handbrake ยังดูเหมือนว่าจะมีชุดที่ จำกัด มากในการควบคุม แม้ว่า Handbrake จะนำมาใช้ต้นน้ำอย่าคาดหวังปาฏิหาริย์ในแง่ของการรักษาคุณภาพและปริมาณงาน

โปรดทราบว่าคุณอาจต้องใช้บิลด์ตอนกลางคืนล่าสุดเพื่อใช้คุณสมบัติตัวเข้ารหัสล่าสุดบนแพลตฟอร์มของคุณในปัจจุบัน สิ่งนี้จะเปลี่ยนแปลงในอนาคตอย่างแน่นอน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.