Làm thế nào để nhận được mã hóa video hỗ trợ GPU của NVIDIA (NVENC) để hoạt động trong Ubuntu
Mã hóa các tập tin video có thể là một kéo hoàn chỉnh. Ngay cả với CPU nhanh nhất trên thị trường, quá trình này có thể mất tới chừng nào bản thân video (ví dụ: 30 phút mã hóa cho video dài ba mươi phút). Không có vấn đề gì các chương trình mã hóa cung cấp cho bạn, họ luôn bị giới hạn bởi sức mạnh của chip của bạn.
Để giải quyết vấn đề này, thẻ NVIDIA có một mẹo nhỏ tiện lợi mà họ đã sử dụng kể từ khi phát hành card đồ họa GeForce 600 series vào năm 2012 gọi là NVENC. Điều này cho phép bạn sử dụng GPU để mã hóa các luồng video. Sử dụng NVENC, không chỉ bạn có thể chuyển đổi video nhanh hơn so với CPU thông thường, nhưng bạn cũng có thể truyền phát video thông qua phần mềm như Open Broadcaster Software (OBS) trong khi giảm hoặc loại bỏ hoàn toàn độ trễ và độ trễ. Vì Linux không có NVENC theo mặc định, bạn sẽ phải làm cho nó hoạt động bằng tay. Tôi giải thích ở đây cách bạn có thể làm điều này trong các bản phân phối dựa trên Ubuntu.
Những điều đầu tiên
Để có được NVENC của NVIDIA hoạt động trên Ubuntu, trước tiên bạn cần tải xuống bộ phát triển phần mềm NVIDIA Video Codec (SDK) từ trang này. Bạn sẽ cần phải tạo một tài khoản, nhưng quá trình này khá đơn giản. Bạn không cần tất cả các tệp trong ZIP, vì vậy chúng tôi sẽ chuyển đến “Samples / common / inc.” Sao chép mọi thứ bạn thấy ở đó vào thư mục “/ usr / local / include” của bạn. Bạn cần phải sao chép các tập tin này để "ffmpeg" (một bộ mã hóa thường xuyên tìm thấy với distro Linux) sẽ nhận ra NVENC và kết hợp nó.
Định cấu hình kho mã nguồn
Bước tiếp theo sẽ liên quan đến việc biên dịch lại phiên bản ffmpeg hiện tại của bạn. Điều này có nghĩa rằng bạn sẽ cần các phụ thuộc xây dựng cho phần mềm, và cho rằng bạn sẽ phải cấu hình Linux để cho phép tải xuống từ các kho mã nguồn trong các nguồn phần mềm của bạn.
Trong Ubuntu, bạn có thể điều hướng đến “System Settings -> Software & Updates”, sau đó nhấp vào “Source code” trong “Ubuntu Software.” Trong Linux Mint (bản phân phối tôi đang sử dụng vì tôi lười), điều này có thể được thực hiện bằng cách truy cập Trình quản lý cập nhật, nhấp vào “Chỉnh sửa”, nhấp vào “Nguồn phần mềm”, sau đó chọn hộp nhỏ với “Bật mã nguồn.” Phương pháp này có thể khác nhau tùy thuộc vào môi trường máy tính để bàn và phân phối Linux, vì vậy bạn có thể cần phải làm một chút linh hồn tìm kiếm để hoàn thành công việc này.
Bây giờ cho phần răng mài của quá trình!
Xây dựng lại ffmpeg
Vì ffmpeg không xây dựng với nhiều tùy chọn được bật tự động (có nghĩa là chúng gần như tất cả các tùy chọn thay vì chọn không tham gia), bạn sẽ phải tìm hiểu cách nó được xây dựng trong hệ thống của bạn và sau đó xây dựng nó bằng cách sử dụng cùng một cấu hình cộng với hỗ trợ cho âm thanh NVENC và AAC. Đây là nơi các tiêu đề bạn đã sao chép trước đó đi vào. Hãy xem, ffmpeg sẽ xem qua các tệp của bạn trong “/ usr / local / include” để tìm bất kỳ codec nào mà nó không tìm thấy trong các túi riêng của nó.
Đầu tiên, chúng tôi xây dựng các phụ thuộc với
sudo apt-get build-dep ffmpeg
Tiếp theo, chúng tôi muốn tải xuống codec âm thanh AAC với
sudo apt-get cài đặt libfdk-aac-dev
Một khi những điều đó được thực hiện, chúng ta sẽ cần lấy nguồn tới phiên bản hiện tại của ffmpeg với
sudo apt-get nguồn ffmpeg
Và khi đã xong, bạn sẽ phải săn lùng một chút trong thư mục Home của bạn. Tìm một thư mục bắt đầu bằng “ffmpeg.” Nó sẽ có số phiên bản ngay sau khi nó được phân cách bởi dấu gạch ngang. Đây là của tôi:
Mở thiết bị đầu cuối của bạn trong thư mục đó. Nếu bạn không thể làm điều đó, hãy mở terminal và gõ:
cd ffmpeg-
trong đó “” đại diện cho số phiên bản đầy đủ mà bạn nhìn thấy trong tên của thư mục đó. Trong trường hợp của tôi, tôi sẽ gõ
cd ffmpeg-2.8.8
Bây giờ hãy nhập
ffmpeg -buildconf
Nó sẽ hiển thị cho bạn toàn bộ cấu hình của cài đặt ffmpeg hiện tại của bạn. Bạn sẽ cần phải sao chép tất cả mọi thứ sau "cấu hình:" mà không có các bit bên dưới bức tường lớn của văn bản. Trong trường hợp của tôi, tôi đang sao chép điều này: (Cấu hình của bạn có thể khác, vì vậy đừng sao chép những gì tôi đang hiển thị cho bạn ở đây.)
--prefix = / usr --extra-version = 0ubuntu0.16.04.1 --build-suffix = -ffmpeg --toolchain = hardened --libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --cc = cc --cxx = g ++ --enable-gpl - có thể chia sẻ - có thể tháo rời - tước - bộ giải mã-bộ giải mã = libopenjpeg --disable-decoder = libschroedinger --enable -avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable -libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable -librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable -libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11gr ab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
Bây giờ, dán bất cứ điều gì bạn đã vào gedit hoặc một số trình soạn thảo văn bản khác và thêm này vào cuối:
--enable-nonfree --enable-nvenc --enable-libfdk-aac
OK, bây giờ tất cả những gì bạn phải làm là gõ
./configure
nơi “” đại diện cho bức tường lớn của văn bản bạn vừa chỉnh sửa để thêm hỗ trợ cho các codec không miễn phí, NVENC và âm thanh AAC. Có lẽ sẽ mất một lúc.
Sau khi tất cả đã xong, hãy nhập
chế tạo
Đợi cho đến khi kết thúc, sau đó nhập
sudo cài đặt
Bạn đã hoàn tất!
Kiểm tra nó
OK, vậy làm thế nào để bạn biết bạn đã nhận được hỗ trợ thành công cho NVENC? Đó là thời gian để có ffmpeg ra cho một spin và mã hóa một video với nó.
Để làm điều này, bạn sẽ cần một tập tin video để chuyển đổi. Giả sử video của chúng tôi nằm trong “/home/miguel/Desktop/test.mkv” và chúng tôi muốn mã hóa nó là “/home/miguel/Desktop/test.mp4.” Dưới đây là cách chúng tôi thực hiện điều đó với ffmpeg và tình yêu mới bắt đầu cho NVENC:
thời gian ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec nvenc /home/miguel/Desktop/test.mp4
Bạn sẽ thấy một cái gì đó như thế này:
Và đó là nó! Chúng tôi đã giết hai con chim bằng một viên đá: bạn đã học cách để có được NVENC trên hệ thống Linux của mình và cách mã hóa video bằng cách sử dụng lệnh thiết bị đầu cuối tiện dụng của ffmpeg. Nếu bạn gặp khó khăn ở đâu đó hoặc tìm cách tốt hơn để làm điều này, hãy chắc chắn để lại một bình luận!