رضا علیمرادی
رضا علیمرادی
خواندن ۴ دقیقه·۴ سال پیش

نصب کردن FFMPEG بهمراه CUDA بعد از کلی دردسر

سلام.

خداقوت همگی.

زیاد اهل نوشتن و دست به قلم شدن نیستم اما با مشکل اعصاب خوردکنی روبرو شدم که سایت های ایرانی «متاسفانه» از پرداختن و توضیح دادن دقیقش ممانعت کردند.

من فقط سعی میکنم چیزی که بعد از حدود چند ماه کار کردن با FFMPEG و CUDA و پردازش های مربوط ویدیو بدست آوردم به اشتراک بزارم.

این مقاله «نوشته یا هر اسم دیگه ای» حاصل ده ها بار آزمون و خطای من در زمینه نصب ffmpeg همراه cuda هست.

امیدوارم استفاده کنید و مورد یا نکته یا راه کار بهتری داشتید توی کامنت مطرح کنید صحبت کنیم راجع بهش.


سیستم عاملی که من ازش استفاده میکنم ubuntu هست.

**قبل از هر کاری حتما از دستور زیر برای دسترسی روت به همه چی استفاده کنید:**

sudo -i

در وهله اول باید کودا «cuda» رو نصب کنیم.

نصب کودا «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 &quotdeb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /&quot
sudo apt-get --purge remove &quot*cublas*&quot &quot*cufft*&quot &quot*curand*&quot \ &quot*cusolver*&quot &quot*cusparse*&quot &quot*npp*&quot &quot*nvjpeg*&quot &quotcuda*&quot &quotnsight*&quot
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

به ترتیب دستورات زیر رو اجرا کنید: برای نصب پیش نیاز های 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=&quot--static&quot --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=&quotnvcc&quot nvccflags_default=&quot-gencode arch=compute_35,code=sm_35 -O2&quot else nvcc_default=&quotclang&quot nvccflags_default=&quot--cuda-gpu-arch=sm_35 -O2&quot NVCC_C=&quot&quot fi

بعد از انجام این کار مجدد دستور config کردن رو که اجرا کنید با خطایی مواجه نمیشید «ان شاءالله» :

دوباره کد config کردن ffmpeg رو مینویسم :

./configure --pkg-config-flags=&quot--static&quot --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 هم میتونید وضعیت کارت گرافیکتون رو ببینید:

ان شاءالله اگر قسمت شد ویدیو این مستندات هم ضبط میکنم و میزارم.

ببینید و ببینانید

یاعلی مدد

ffmpegcudaزخم
شاید از این پست‌ها خوشتان بیاید