نصب کردن 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.pinsudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pubsudo add-apt-repository &quotdeb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /&quotsudo 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*&quotsudo 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.pinsudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600wget 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.debsudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.debsudo apt-key add /var/cuda-repo-ubuntu2004-11-3-local/7fa2af80.pubsudo apt-get updatesudo 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به ترتیب دستورات زیر رو اجرا کنید: برای نصب پیش نیاز های ffmpeggit clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.gitcd 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-devsudo apt-get install libssl-devapt-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 8sudo 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 هم میتونید وضعیت کارت گرافیکتون رو ببینید:ان شاءالله اگر قسمت شد ویدیو این مستندات هم ضبط میکنم و میزارم.ببینید و ببینانیدیاعلی مدد