سلام.
خداقوت همگی.
زیاد اهل نوشتن و دست به قلم شدن نیستم اما با مشکل اعصاب خوردکنی روبرو شدم که سایت های ایرانی «متاسفانه» از پرداختن و توضیح دادن دقیقش ممانعت کردند.
من فقط سعی میکنم چیزی که بعد از حدود چند ماه کار کردن با FFMPEG و CUDA و پردازش های مربوط ویدیو بدست آوردم به اشتراک بزارم.
این مقاله «نوشته یا هر اسم دیگه ای» حاصل ده ها بار آزمون و خطای من در زمینه نصب ffmpeg همراه cuda هست.
امیدوارم استفاده کنید و مورد یا نکته یا راه کار بهتری داشتید توی کامنت مطرح کنید صحبت کنیم راجع بهش.
سیستم عاملی که من ازش استفاده میکنم ubuntu هست.
**قبل از هر کاری حتما از دستور زیر برای دسترسی روت به همه چی استفاده کنید:**
sudo -i
در وهله اول باید کودا «cuda» رو نصب کنیم.
به ترتیب دستورات زیر رو مو به مو اجرا کنید:
wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \ "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"
sudo apt-get --purge remove *nvidia*
sudo apt-get autoremove
خب توی این مرحله درایور های nvidia موجود رو حذف میکنیم و اجازه میدیم کودا خودش بسازه هر چیزی که لازم داره رو.
برای این کار از دستورات زیر استفاده کنید :
sudo dpkg -P $(dpkg -l | grep nvidia-driver | awk '{print $2}')
sudo apt autoremove
خب بعد از اینکه این موارد رو اجرا کردید حالا باید یه سر برید به سایت اصلی nvidia برای دانلود آخرین نسخه کودا:
آدرس : https://developer.nvidia.com/cuda-downloads
نکته : حتما از یه vpn خوب استفاده کنید.
بعد مثل یه پرسش و پاسخ ساده نسخه سیستم خودتون رو انتخاب کنید و در آخر روی deb(local) رو انتخاب کنید.
دیدن تصویر زیر هم خالی از لطف نیست:
پایین صفحه یه سری کد در اختیارتون قرار داده که فقط کافیه دونه دونه کپی پیست کنید توی ترمینالتون.
من برای کودا 11 از این کدها استفاده کردم :
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
بعد از اینکه موارد بالا رو اجرا کردید نیاز دارید که توی فایل .bashrc دوتا خط کد زیر رو اضافه کنید.
nano ~/.bashrc
دو تا مورد زیر رو به انتهای فایل اضافه کنید.
نکته : «دقت کنید از ورژن درست استفاده کنید حتما توی مسیر دهی به این متغیر ها»
برای اینکه بدونید از چه ورژنی استفاده کنید از عکس زیر کمک بگیرید:
بعد از اینکه ورژن درست رو فهمیدید کد زیر رو اصلاح کنید و به انتهای فایل bashrc اضافه کنید.
export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
خب تا اینجای کار همه چی رو ول کنید تا بریم سر وقت FFMPEG
به ترتیب دستورات زیر رو اجرا کنید: برای نصب پیش نیاز های ffmpeg
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers && sudo make install
حالا نوبت به نصب خود ffmpeg میرسه:
دستورات زیر رو به ترتیب اجرا کنید :
cd ..
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
پکیج های لازم رو نصب کنید با دستور زیر؛
sudo sudo apt-get -y install build-essential pkg-config checkinstall git libfaac-dev libgpac-dev ladspa-sdk-dev libunistring-dev libbz2-dev \ libjack-jackd2-dev libmp3lame-dev libsdl2-dev libopencore-amrnb-dev libopencore-amrwb-dev libvpx-dev libx264-dev libx265-dev libxvidcore-dev libopenal-dev libopus-dev \ libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev \ libxfixes-dev texi2html yasm zlib1g-dev
sudo apt-get install libssl-dev
apt-get install linux-headers-$(uname -r)
حالا نوبت به کانفیگ کردن ffmpeg میرسه.
برید به مسیر ffmpeg : از عکس زیر هم میتونید کمک بگیرید برای یافتن مسیر
حالا باید دستور کانفیگ ffmpeg رو اجرا کنیم :
./configure --pkg-config-flags="--static" --extra-cflags=-I/usr/local/cuda-11.3/include --extra-ldflags=-L/usr/local/cuda-11.3/lib64 --enable-nonfree --enable-gpl --enable-version3 --enable-libmp3lame --enable-libvpx --enable-libopus --enable-opencl --enable-libxcb --enable-opengl --enable-nvenc --enable-vaapi --enable-vdpau --enable-ffplay --enable-ffprobe --enable-libxvid --enable-libx264 --enable-libx265 --enable-openal --enable-openssl --enable-cuvid --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libvorbis --enable-cuda-sdk --enable-cuda --enable-nvenc --enable-cuda-nvcc --enable-libnpp
اگر بعد از اجرا با ارور مزخرف و رو مخ «ERROR: failed checking for nvcc» مواجه شدید نکته مهم زیر رو بخونید.
* نکته مهم : در صورت مواجه شدن با ارور «ERROR: failed checking for nvcc» موقع کانفیگ کردن ffmpeg مواجه شدید باید فایل .configure رو ویرایش کنید و یه بخشی از اون رو تغییر بدید.
برای ویرایش فایل .configure از دستور nano .configure استفاده کنید.
خب دنبال این تیکه از کد زیر بگردید توی فایل و تمامی اعدادش رو از 30 به 35 تغییر بدید.
if enabled cuda_nvcc; then nvcc_default="nvcc" nvccflags_default="-gencode arch=compute_35,code=sm_35 -O2" else nvcc_default="clang" nvccflags_default="--cuda-gpu-arch=sm_35 -O2" NVCC_C="" fi
بعد از انجام این کار مجدد دستور config کردن رو که اجرا کنید با خطایی مواجه نمیشید «ان شاءالله» :
دوباره کد config کردن ffmpeg رو مینویسم :
./configure --pkg-config-flags="--static" --extra-cflags=-I/usr/local/cuda-11.3/include --extra-ldflags=-L/usr/local/cuda-11.3/lib64 --enable-nonfree --enable-gpl --enable-version3 --enable-libmp3lame --enable-libvpx --enable-libopus --enable-opencl --enable-libxcb --enable-opengl --enable-nvenc --enable-vaapi --enable-vdpau --enable-ffplay --enable-ffprobe --enable-libxvid --enable-libx264 --enable-libx265 --enable-openal --enable-openssl --enable-cuvid --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libvorbis --enable-cuda-sdk --enable-cuda --enable-nvenc --enable-cuda-nvcc --enable-libnpp
در انتها حتما باید دوتا دستور زیر رو به ترتیب بزنید تا نصب ffmpeg هم تموم بشه:
make -j 8
sudo make install
ایزی ایزی تامام تامام
اینم از نصب کردن اف اف ام پگ همراه کودا که بعد از آزمون و خطاهای زیادی اینجا داکیومنت کردم.
هم برای خودم و هم برای دیگر عزیزانی که با نصبش مشکل دارن.
منبع : https://rendulic.me/install-ffmpeg-on-ubuntu-20-04-with-cuda/
برای تستش هم میتونید با این دستور یه پروسه ffmpeg ایجاد کنید:
ffmpeg -y -loglevel info -hwaccel cuda -hwaccel_output_format cuda -hwaccel_device 0 -i https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4 scale_npp=w=1280:h=720 -c:v h264_nvenc -b:v 1500k -c:a aac -b:a 128k -ar 48000 output.mp4
و با دستور nvidia-smi هم میتونید وضعیت کارت گرافیکتون رو ببینید:
ان شاءالله اگر قسمت شد ویدیو این مستندات هم ضبط میکنم و میزارم.
ببینید و ببینانید
یاعلی مدد