<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          FFmpeg 使用顯卡加速轉(zhuǎn)碼

          共 5749字,需瀏覽 12分鐘

           ·

          2022-01-17 01:07

          原文鏈接: https://juejin.cn/post/7034411980316213256

          前言


          視頻轉(zhuǎn)碼時如果遇見視頻比較大、時長很長的時候,轉(zhuǎn)碼壓制需要等待很久且及占用cpu,所以就在想有沒有什么辦法可以加速轉(zhuǎn)碼進度呢 ,故本篇文章記錄FFMPEG如何調(diào)用顯卡對轉(zhuǎn)換編碼格式或者壓制進行加速。

          軟硬編解碼的區(qū)分:

          軟編碼:使用CPU進行編碼

          硬編碼:使用非CPU進行編碼,如顯卡GPU、專用的DSP、FPGA、ASIC芯片等

          軟硬編解碼的區(qū)別:

           軟編碼:實現(xiàn)直接、簡單,參數(shù)調(diào)整方便,升級易,但CPU負載重,性能較硬編碼低,低碼率下質(zhì)量通常比硬編碼要好一點。

          硬編碼:性能高,低碼率下通常質(zhì)量低于軟編碼器,但部分產(chǎn)品在GPU硬件平臺移植了優(yōu)秀的軟編碼算法(如X264)的,質(zhì)量基本等同于軟編碼。

          簡單來說硬解碼就是 內(nèi)存 - codec 電路 - 內(nèi)存/顯示 的過程所以速度會比軟件編解碼快

          基礎(chǔ)環(huán)境


          • FFMPEG BUILDS 4.4.1

            FFmpeg Builds?https://www.gyan.dev/ffmpeg/builds/

          • GeForce GTX 1060(NVIDIA)

            顯卡支持列表

          • windows 10

          環(huán)境搭建

          安裝FFMPEG

          https://ffmpeg.org/download.html


          根據(jù)系統(tǒng)選擇適合的版本進行下載


          選擇版本進行下載,本人下載的是 ffmpeg-release-essentials.zip


          環(huán)境配置
          壓縮ffmpeg-release-essentials.zip到指定目錄,進入bin目錄,里面有三個文件

          ffmpeg.exe ffplay.exe ffprobe.exe

          其中我們經(jīng)常使用到的就是 ffmpeg.exe,此時在目錄中可以執(zhí)行 ffmpeg version

          PS D:\Software\ffmpeg\bin> ffmpeg -version
          ffmpeg version 2021-05-05-git-7c451b609c-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
          built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
          configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
          libavutil 57. 0.100 / 57. 0.100
          libavcodec 59. 0.100 / 59. 0.100
          libavformat 59. 0.101 / 59. 0.101
          libavdevice 59. 0.100 / 59. 0.100
          libavfilter 8. 0.101 / 8. 0.101
          libswscale 6. 0.100 / 6. 0.100
          libswresample 4. 0.100 / 4. 0.100
          libpostproc 56. 0.100 / 56. 0.100

          出現(xiàn)以上信息證明安裝成功,如果不想每次都進入目錄或使用絕對路徑,可以配置環(huán)境變量。


          安裝 CUDA 驅(qū)動

          CUDA是一個驅(qū)動程序,可以讓GPU進行相關(guān)運算,因為我們開發(fā)應(yīng)用程序一般不直接操控GPU,而是通過驅(qū)動來操作。

          首先確定自己的電腦是否支持CUDA

          Video Encode and Decode GPU Support Matrix

          下載?https://developer.nvidia.com/cuda-downloads

          選擇系統(tǒng)類型下載


          硬件加速方式

          通過命令 ffmpeg -hwaccels 可以查詢系統(tǒng)支持的硬件加速器。

          ffmpeg -hwaccels
          ----------------------------------------------
          cuda
          dxva2
          qsv
          d3d11va
          opencl
          vulkan

          PS:以上輸出代表系統(tǒng)所支持的硬件加速方式,后續(xù)會用到

          硬編碼后綴解釋
          • qsv:intel顯卡的快速視頻同步技術(shù)(quick sync video)

          • nvenc:nvidia顯卡的硬件視頻編碼器(nvidia hardware video encoder)

          • cuvid:nvdec的舊稱,只有解碼端。

          • cuda:同上

          • amf:amd顯卡的amf硬件編碼器(amd hardware encoder)

          基本上所有的Intel 電腦都支持qsv方式。

          編解碼器支持
          ffmpeg -codecs

          查詢編碼器

          ffmpeg -codecs

          后面可以跟 sls命令查詢所需的編碼,例如:ffmpeg -codecs | sls nvenc

          ffmpeg -codecs | sls nvenc
          ---------------------------------------------------------------
          DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv h264_cuvid ) (encoders:
          libx264 libx264 libx264rgb h264_amf h264_nvenc h264_qsv )
          DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_cuvid ) (encoder
          s: libx265 hevc_amf hevc_nvenc hevc_qsv )

          查詢系統(tǒng)支持的編解碼格式,需要用到 ffmpeg -decodersffmpeg -encoders 兩個命令。

          查詢編解碼器選項

          查詢編碼器hevc_nvenc的選項

          ffmpeg -h encoder=hevc_nvenc

          查詢解碼器 h264_qsv 的詳細信息

          ffmpeg -h decoder=h264_qsv
          ffmpeg -decoders

          下面以h264作為測試

          ffmpeg -decoders | sls h264
          ------------------------------------------------------
          VFS..D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
          V....D h264_qsv H264 video (Intel Quick Sync Video acceleration) (codec h264)
          V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264)

          PS:h264_qsv ,h264_cuvidh264 :就是支持的解碼方式

          sls :作用相當(dāng)于linux中的grep

          h264_qsv:英特爾硬解碼

          h264_cuvid:英偉達硬解碼

          ffmpeg -encoders

          同解碼格式查詢

           ffmpeg -encoders | sls h264
          --------------------------------------------------------
          V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
          V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
          V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
          V....D h264_amf AMD AMF H.264 Encoder (codec h264)
          V....D h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
          V..... h264_qsv H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h26)

          sls :作用相當(dāng)于linux中的grep

          如以上有類似輸出則證明是支持硬解碼或者硬編碼的。

          硬件加速命令
          ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -b:v 2048k -s 1920x1080 output.mp4
          常用命令參數(shù)解釋
          • -hwaccel cuvid:使用cuvid進行硬件加速

          • -c:v h264_cuvid:使用h264_cuvid進行解碼

          • -c:v h264_nvenc:使用h264_nvenc進行編碼(nvidia硬件加速x265)

          • -b:v 2000k:比特率,值越大約清晰。

          • -s 1920x1080:分辨率

          • -b:v 3500K :視頻平均比特率為 3500K

          • -bufsize 6000K:緩存區(qū)大小 6000K,建議設(shè)定為 當(dāng)前碼率幀率5,也許這里的2pass是針對緩沖區(qū)的,緩存未來5s

          • -maxrate 5000K:最大碼率為 5000K,每幀的最高碼率不超過這個數(shù)值

          • -preset slow:預(yù)設(shè)方案是 slow,slow已經(jīng)是最好的選項了

          • -pix_fmt p010le:輸出的像素格式是 p010le 也就10bit,只有新的硬件支持,例如:970m不支持,1070可以支持

          總結(jié)

          以上就是本人使用ffmpeg硬件加速轉(zhuǎn)碼的整體過程,如有疑問或者意見歡迎大家討論。

          參考

          https://developer.nvidia.com/zh-cn/blog/nvidia-ffmpeg-transcoding-guide/
          https://docs.nvidia.com/video-technologies/video-codec-sdk/ffmpeg-with-nvidia-gpu/
          瀏覽 183
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天射天天爽天天爱 | 特级西西人体4444XXXX | 美女性高潮视频 | 亚洲AV成人中文无码专区观看 | 人妻无码91 |