Devuan-এ nvcc ইনস্টল করে NVENC সক্ষম করা এবং হার্ডওয়্যার এনকোডিং ব্যবহারযোগ্য করা
নমস্কার, আমি অযোগ্য।
Nextcloud-এর একটি অ্যাপ হিসাবে উপরেরটি ব্যবহার করে এটি এতটাই সুবিধাজনক মনে হয়েছে যে, হার্ডওয়্যার এনকোডিংও সক্ষম করা যেতে পারে, তাই এই সুযোগে আমি এটি ইনস্টল করেছি।
https://developers.play.jp/entry/2022/11/18/181357#NVIDIA-এর ড্রাইভার ইনস্টল করুন
এই সাইটটি উল্লেখ করে, আমি যথাসম্ভব সর্বশেষ সংস্করণটি ইনস্টল করব।
প্রয়োজনীয় প্যাকেজ ইনস্টল করুন
sudo apt install autoconf automake bzip2 libbz2-dev cmake libfreetype6-dev gcc g++ git libtool make pkg-config zlib1g-dev nasm
ডিরেক্টরি তৈরি করুন
mkdir bin ffmpeg_build ffmpeg_sources
একটি পরীক্ষা হিসাবে ইনস্টল করার জন্য, যাতে আমি যেকোনো সময় এটি ফিরিয়ে আনতে পারি, আমি এটি একটি সাধারণ ব্যবহারকারীর হোম ডিরেক্টরিতে রাখার সিদ্ধান্ত নিয়েছি।
ডিরেক্টরি পরিবর্তন করুন এবং wget ব্যবহার করে nv-codec-headers-এর সর্বশেষ সংস্করণটি সংরক্ষণ করুন, এক্সট্র্যাক্ট করুন এবং বিল্ড করুন।
তারপর ffmpeg-এর সোর্স কোড সংরক্ষণ করুন।
cd ~/ffmpeg_sources/
wget https://github.com/FFmpeg/nv-codec-headers/releases/download/n12.2.72.0/nv-codec-headers-12.2.72.0.tar.gz
ls -la
tar xf nv-codec-headers-12.2.72.0.tar.gz
ls -la
cd nv-codec-headers-12.2.72.0
make PREFIX=$HOME/ffmpeg_build
make install PREFIX=$HOME/ffmpeg_build
cd ..
wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.gz
ls -la
tar xf ffmpeg-7.0.1.tar.gz
ls -la
তারপর, nvidia-cuda-toolkit ইনস্টল করুন। সতর্কতার জন্য, আমি মাঝপথে ইতিমধ্যে ইনস্টল করা যেকোনো কিছু মুছে ফেলছি।
wget https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.42.02_linux.run
ls -la
sudo apt remove nvidia-cuda-toolkit
ls -la
chmod +x cuda_12.5.0_555.42.02_linux.run
sudo ./cuda_12.5.0_555.42.02_linux.run --silent --override --toolkit --no-opengl-libs
nvcc -V
এই মুহূর্তে, পাথ সেট করা আছে কিনা তা পরীক্ষা করুন, এবং যেহেতু এটি নেই, আমি এটি /etc/profile-এ যুক্ত করব।
which nvcc
export PATH="/usr/local/cuda/bin:${PATH}"
which nvcc
sudo ldconfig
sudo vim /etc/profile
আমি এটি নিম্নরূপ যুক্ত করেছি।
ছবিতে, চূড়ান্ত এক্সিকিউটেবল ফাইলের গন্তব্য ইতিমধ্যেই যুক্ত করা হয়েছে, কিন্তু...
আমি কেন $HOME দিয়ে নির্দিষ্ট করিনি তার কারণ হল এটি সবকিছুর জন্য প্রযোজ্য, এবং যদি এটি রুট হয়, তাহলে এটি /home/root/bin-এ দেখবে, তাই আমি এটি বর্তমান এক্সিকিউটিং ব্যবহারকারীর জন্য রাখছি।
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "$(id -u)" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
export PATH="/usr/local/cuda/bin:${PATH}"
export PATH="/home/haturatu/bin:${PATH}"
~~~~
এরপর, আমি বিল্ড প্রক্রিয়া সম্পন্ন করব।
মাঝপথে লাইব্রেরির ভিতরে পরীক্ষা করুন।
cd nv-codec-headers-12.2.72.0
make PREFIX=$HOME/ffmpeg_build
make install PREFIX=$HOME/ffmpeg_build
cd ~/ffmpeg_sources
ls -la
cd ffmpeg-7.0.1
ls -la /usr/local/cuda/include
ls -la /usr/local/cuda/lib64
CFLAGS="-O3 -I/usr/local/cuda/include" LDFLAGS="-L/usr/local/cuda/lib64" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --bindir="$HOME/bin" --enable-nonfree --enable-gpl --enable-cuda-nvcc --enable-libnpp --disable-debug --disable-doc --enable-static
make -j 8
make install
এটি সম্পন্ন হয়েছে, কিন্তু পাথ এখনও নতুন এক্সিকিউটেবল ফাইলের অবস্থান দেখছে না।
ffmpeg
ls ../bin
cd ~
ls bin
./bin/ffmpeg
which ffmpeg
ls bin
পাথ নির্দিষ্ট করুন।
export PATH="/home/haturatu/bin:${PATH}"
which ffmpeg
sudo vim /etc/profile
#↑এখানে, আমি পূর্বে উল্লিখিত PATH যুক্ত করেছি।
এটি শেষ।
যেহেতু ffmpeg দিয়ে হার্ডওয়্যার এনকোডিং এখন সফলভাবে সম্ভব হয়েছে, আমি Nextcloud দিক থেকেও পরীক্ষা করেছি এবং এটি এমন একটি স্তরে আরামদায়ক হয়ে উঠেছে যেখানে আমি স্পষ্টভাবে পার্থক্য অনুভব করতে পারি... নাকি এমনটা মনে হচ্ছে...!?
যেহেতু আমার কাছে প্রতিটি এক্সিকিউটেবল ফাইল আছে, তাই যদি আমার অবসর থাকে, আমি এনকোডিং বেঞ্চমার্ক নেওয়ার চেষ্টা করব। তাহলে আবার দেখা হবে।