จะติดตั้ง / คอมไพล์ NVENC ใน Ubuntu ได้อย่างไร?


14

ฉันเห็นการสนับสนุน nvidia NVENC ในเอกสารนี้ แต่ดูเหมือนว่าสับสนบ้างทีละขั้นตอน? หรือ PPA กับ ffmpeg-nvenc สำหรับ Ubuntu หรือไม่

http://developer.download.nvidia.com/compute/redist/ffmpeg/1511-patch/FFMPEG-with-NVIDIA-Acceleration-on-Ubuntu_UG_v01.pdf

คำตอบ:


19

เช่นเดียวกับ FFmpeg การพัฒนาอย่างต่อเนื่องจะทำให้การโพสต์เป้าหมายหลายครั้งและนี่ก็เป็นจริงของ nvenc และ FFmpeg มี 3 ขั้นตอน:

  1. เตรียมตนเอง : ก่อนวันที่ 27 สิงหาคม 2559 จำเป็นต้องติดตามส่วนหัวของคุณเพื่อสร้าง nvenc มีความอดทนและสับสนมากกว่าเล็กน้อย
  2. สร้างขึ้นในแหล่งที่มา : 27 สิงหาคม 2016 เห็นส่วนหัวที่จำเป็นซึ่งรวมอยู่ในส่วนหนึ่งของแหล่ง FFmpegไม่จำเป็นต้องใช้อะไรนอกจากความสามารถในการรวบรวมแหล่ง FFmpeg จากคอมไพล์หรือใช้เวอร์ชัน 'ปล่อย' ตัดออกจากคอมไพล์ในเวลานี้
  3. ใช้ NV-ตัวแปลงสัญญาณส่วนหัว : เมื่อวันที่ 26 กุมภาพันธ์ 2018 ส่วนหัว NVidia ถูกลบออกจากแหล่ง FFmpeg ที่เก็บ git แยกถูกสร้างขึ้นเพื่อระงับการทำงานต่อกับส่วนหัวเหล่านี้ ในขณะนี้ส่วนหัวเหล่านี้จะต้องติดตั้งรวมทั้ง FFmpeg จาก git เพื่อเข้าถึง nvenc และเพื่อน ๆ

ต้องการสองขั้นตอน:

1. ติดตั้งแพคเกจ nv-codec-headers :

คำสั่ง Terminal ต่อไปนี้น่าจะพอเพียง:

sudo apt-get install make git
mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install

ถ้าด้วยเหตุผลบางอย่างคุณเปลี่ยนใจและต้องการลบไฟล์ที่ติดตั้งไว้อย่างสมบูรณ์รวมทั้งไดเรกทอรีการสร้างก็แค่รันคำสั่ง Terminal สองคำสั่งต่อไปนี้:

sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build

และระบบของคุณได้รับการทำความสะอาด อย่างไรก็ตามหากคุณต้องการใช้ขั้นตอนต่อไปนี้:

2. รวบรวม FFmpeg :

ใช้คำแนะนำที่ผ่านการทดสอบเป็นอย่างดี:

nv-codec-headersจะได้รับการยอมรับโดยอัตโนมัติ (ไม่เสริม./configureตัวเลือกที่มีความจำเป็น) และ nvenc จะถูกสร้างขึ้นประสบความสำเร็จ

การทดสอบ:

ฉันได้ทดสอบสิ่งนี้กับ Bionic Beaver LTS และผลลัพธ์คือ:

andrew@ilium:~$ ffmpeg -encoders 2>/dev/null | grep nvenc
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
andrew@ilium:~$

และถ้าคุณเห็นภาพที่คล้ายกันดังกล่าวข้างต้นและคุณมีการ์ดกราฟิกที่รองรับคุณมีสิทธิ์ที่จะไป :)

หมายเหตุ:

  • เวอร์ชั่นล่าสุดสอดคล้องกับ Video Codec SDK เวอร์ชั่น 9.1.23 และต้องใช้ไดรเวอร์ NVidia เวอร์ชัน 435.21 หรือใหม่กว่า
  • เวอร์ชันที่เก่ากว่า : ขณะนี้มีสำเนา github อัตโนมัติของส่วนหัว codec nv ซึ่งสร้าง tarballs ที่สมบูรณ์แบบสำหรับการใช้ส่วนหัวรุ่นเก่า ดีมากถ้าคุณต้องการให้ส่วนหัวซิงค์กับไดรเวอร์ NVidia รุ่นเก่าที่คุณไม่สามารถหรือไม่ต้องการอัปเดต
  • คู่มือการเร่งความเร็วของฮาร์ดแวร์สำหรับ FFmpeg : FFmpeg คู่มือ Wiki สำหรับการเร่งความเร็วฮาร์ดแวร์โดยทั่วไปกับ FFmpeg ซึ่งเป็นส่วนมาตรฐานสำหรับการรวบรวมและใช้ nvenc ...

ขอบคุณมากสำหรับคำแนะนำโดยละเอียดนี้ ฉันได้ผลลัพธ์ที่คล้ายกันจากส่วนการทดสอบของคุณซึ่งยอดเยี่ยมมาก นอกเหนือจากไดรเวอร์ nVidia เรายังต้องติดตั้ง Cuda SDK เพื่อรับ FFMPEG เพื่อใช้ GPU ที่ติดตั้งหรือไม่
Dev ที่ไม่รู้จัก

@KimberlyW ไม่จำเป็นต้องใช้ในระบบของฉันฉันเพิ่งจะทดสอบ ...
andrew.46

@ andrew.46 ฉันทำสิ่งที่คุณพูด แต่ฉันยังไม่มีการเร่งความเร็วฮาร์ดแวร์สำหรับ vp9: /
Freedo

@Freedo น่าเสียดายที่ nvenc ใช้สำหรับการเข้ารหัส H.264 และ HEVC ...
andrew.46

1
@DPS Ouch !! แต่ไม่ใช่การถอนการติดตั้งอย่างง่าย ๆ ของส่วนหัว nv-codec ที่ฉันได้ให้ไว้ในคำตอบนี้หรือไม่?
andrew.46

0

@ andrew.46 คำตอบของคุณดีมากขอบคุณ ชื่อเสียงของฉันต่ำกว่าเกณฑ์ที่จะโพสต์สิ่งนี้เป็นความคิดเห็น หากเป็นไปได้โปรดขยายการตอบกลับของคุณด้วยข้อมูลต่อไปนี้

หากคุณจำเป็นต้องกลับไปใช้รุ่นก่อนหน้าnv-codec-headersดาวน์โหลดและรวบรวมรุ่นก่อนหน้าจากhttps://github.com/FFmpeg/nv-codec-headers/releases

นี้อาจจะเป็นสิ่งที่จำเป็นถ้าคุณรวบรวมffmpegกับล่าสุดnv-codec-headersแต่คนขับกราฟิกของคุณเป็นของรุ่นที่ยังไม่จัดการขั้นต่ำ CUDA รุ่น API nv-codec-headersที่จำเป็นโดย อาการนั้นffmpegจะไม่สามารถแปลงวิดีโอสตรีมได้ ในกรณีของฉันnv-codec-headersต้องใช้ CUDA API 9.1 ในขณะที่รุ่นล่าสุดnvidia-driverสำหรับการแจกจ่ายของฉัน (การทดสอบ) ยังคงเป็นรุ่นที่ใช้ 9.0

การย้อนกลับไปสู่รุ่นก่อนหน้าnv-codec-headersนั้นน่าจะปลอดภัยกว่าการดาวน์โหลดไดรเวอร์ล่าสุดโดยตรงจาก Nvidia และสร้างขึ้นนอกการอัพเดทกลไกการกระจายของคุณ


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