99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于FFmpeg的硬件加速轉(zhuǎn)碼

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-28 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

所有從 Kepler 一代開始的 NVIDIA GPUs 都支持完全加速的硬件視頻編碼,而從費米一代開始的所有 GPUs 都支持完全加速的硬件視頻解碼。截至 2019 年 7 月,Kepler、Maxwell、Pascal、Volta 和 Turing 一代 GPUs 支持硬件編碼,F(xiàn)ermi、Kepler、Maxwell、Pascal、Volta 和 Turing 一代 GPUs 支持硬件解碼。

高質(zhì)量視頻應用的處理需求對廣播和電信網(wǎng)絡提出了限制。消費者行為已經(jīng)發(fā)生了變化,這在 OTT 視頻訂閱和實時流媒體迅速普及的趨勢中表現(xiàn)得很明顯?,F(xiàn)在所有的社交媒體應用程序都在各自的平臺上加入了這一功能。隨著消費者從觀看點播視頻轉(zhuǎn)向觀看直播視頻,直播將推動手機Wi-Fi 的整體視頻數(shù)據(jù)流量增長。

分發(fā)給觀眾的視頻內(nèi)容通常被轉(zhuǎn)換成幾個自適應比特率( ABR )配置文件以進行傳輸。生產(chǎn)中的內(nèi)容可能以大量編解碼器格式之一到達,這些格式需要轉(zhuǎn)換為另一種格式以供分發(fā)或存檔。

這使得視頻轉(zhuǎn)碼成為高效視頻管道中的一個關鍵部分——無論是 1 : N 還是 M : N 配置文件。理想的轉(zhuǎn)碼解決方案需要在成本(美元/流)和能效(瓦特/流)方面具有成本效益,同時為數(shù)據(jù)中心提供具有最大吞吐量的高質(zhì)量內(nèi)容。視頻提供商希望降低向更多屏幕提供更多高質(zhì)量內(nèi)容的成本。

在各個方面生成的大量視頻內(nèi)容需要對視頻編碼、解碼和轉(zhuǎn)碼進行健壯的硬件加速。讓我們看看 NVIDIA GPUs 是如何整合專用視頻處理硬件的,以及如何利用它。

NVIDIA 編解碼硬件

NVIDIA GPUs 船上配備了片上硬件編碼器和解碼器單元,通常稱為 NVENC 和 NVDEC 。與 CUDA 核心分開, NVENC / NVDEC 運行編碼或解碼工作負載,而不會減慢同時運行的圖形或 CUDA 工作負載的執(zhí)行。

NVENC 和 NVDEC 支持許多重要的編解碼編解碼器。 NVIDIA 。最新的支持矩陣可以在 GPU 上找到。

poYBAGJqPDyANJ-RAAFxnPBG7l8839.png

圖 1 : GPU 硬件功能

基于 FFmpeg 的硬件加速轉(zhuǎn)碼

在對視頻數(shù)據(jù)進行轉(zhuǎn)碼時,通常使用 FFmpeg 庫 。硬件加速極大地提高了工作流的性能。圖 2 顯示了 FFmpeg 轉(zhuǎn)換過程的不同元素。

poYBAGJqPD6AVMdOAABAeoOajMk422.png

圖片 2 :使用 NVIDIA 硬件加速的 FFmpeg 流水線轉(zhuǎn)碼

FFmpeg 通過 h264_cuvid 、 hevc_cuvid 和 h264_nvenc 、 hevc_nvenc 模塊支持硬件加速解碼和編碼。從源代碼構建時激活對硬件加速的支持需要一些額外的步驟:

克隆 FFmpeg git 存儲庫 https://git.ffmpeg.org/ffmpeg.git

從 NVIDIA 網(wǎng)站 下載并安裝兼容的驅(qū)動程序

下載并安裝 CUDA 工具箱

克隆 nv-codec-headers 存儲庫 并僅使用此存儲庫作為頭進行安裝: make install

使用以下命令配置 FFmpeg (使用正確的 CUDA 庫路徑):

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
  • 使用多個進程進行構建,以提高構建速度并抑制過度輸出:make -j-s

使用 FFmpeg 進行軟件 1 : 1 轉(zhuǎn)碼非常簡單:

ffmpeg -i input.mp4 -c:a copy -c:v h264 -b:v 5M output.mp4

但這將是緩慢的,因為它只使用基于 CPU 的軟件編碼器和解碼器。使用硬件編碼器 NVENC 和解碼器 NVDEC 需要添加更多參數(shù)來告訴 ffmpeg 使用哪個編碼器和解碼器。最大化轉(zhuǎn)碼速度還意味著確保解碼后的圖像保存在 GPU 存儲器中,以便編碼器能夠有效地訪問它。

ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

如果沒有 -hwaccel-cuvid 選項,解碼后的原始幀將通過 PCIe 總線復制回系統(tǒng)內(nèi)存,如圖 3 所示。稍后,相同的圖像將通過 PCIe 復制回 GPU 內(nèi)存,以便在 GPU 上進行編碼。這兩個額外的傳輸由于傳輸時間而造成延遲,并將增加 PCIe 帶寬占用。

圖3 :沒有 hAccel 的內(nèi)存流(& M )

添加 -hwaccel-cuvid 選項意味著原始解碼幀將不會被復制,轉(zhuǎn)碼將更快、使用更少的系統(tǒng)資源,如圖 4 所示。

hwaccel 的內(nèi)存流

給定 PCIe 帶寬限制,復制未壓縮的圖像數(shù)據(jù)會使 PCIe 總線迅速飽和。防止系統(tǒng)和 GPU 內(nèi)存之間不必要的復制,使用 -hwaccel-cuvid 的吞吐量比不使用 -hwccel-cuvid 的未優(yōu)化調(diào)用高出 2 倍。

處理篩選器

代碼轉(zhuǎn)換通常不僅涉及到更改輸入流的格式或比特率,還包括調(diào)整其大小。有兩個選項可用于調(diào)整 GPU 上的大小:使用 npp_scale 過濾器或 nvcuvid resize 選項。當從一個輸入到一個具有不同分辨率( 1 : 1 轉(zhuǎn)碼)的輸出流轉(zhuǎn)碼時,可以使用 nvcuvid resize 選項。請參見下一行的示例。

ffmpeg -vsync 0 –hwaccel cuvid -c:v h264_cuvid –resize 1280x720-i input.mp4 -c:a copy -c:v h264_nvenc -b:v 5M output.mp4

如果需要多個輸出分辨率( 1 : N 轉(zhuǎn)碼),則scale_npp濾波器可以調(diào)整 GPU 上解碼幀的大小。通過這種方式,我們可以生成具有多個不同分辨率的多個輸出流,但對所有流只使用一個調(diào)整大小的步驟。關于 1 : 2 轉(zhuǎn)碼的示例,請參見下一行。

ffmpeg -vsync 0 –hwaccel cuvid -c:v h264_cuvid -i input.mp4 \-c:a copy –vf scale_npp=1280:720-c:v h264_nvenc -b:v 5M output_720.mp4 \-c:a copy -vfscale_npp=640:320-c:v h264_nvenc -b:v 3M output_360.mp4

使用-vf "scale_npp=1280:720"將設置scale_npp作為解碼圖像的過濾器

插值算法可以作為附加參數(shù)為scale_npp定義。默認情況下使用三次插值,但其他算法 MIG ht 會根據(jù)比例因子和圖像提供更好的結果。建議在縮小尺度時使用超級采樣算法以獲得最佳質(zhì)量。示例如下:

ffmpeg -vsync 0 –hwaccel cuvid -c:v h264_cuvid -i input.mp4-c:a copy –vf scale_npp=1280:720:interp_algo=super-c:v h264_nvenc -b:v 5M output_720.mp4

混合 CPU 和 GPU 處理

有時 MIG 需要混合使用 CPU 和 hwupload_cuda 處理。例如,您可能需要在 CPU 上解碼,因為 -hwaccel cuvid 解碼器不支持該格式,或者 GPU 上沒有濾波器。在這種情況下,不能使用 GPU 標志。相反,您需要使用 GPU 過濾器將數(shù)據(jù)從系統(tǒng)上傳到 GPU 內(nèi)存。在下面的示例中,由于未設置 -hwaccel cuvid ,因此在 GPU 上解碼 H 。 264 流并將其下載到系統(tǒng)內(nèi)存中。淡入濾波器應用于系統(tǒng)存儲器中,并使用 hwupload_cuda 濾波器將處理后的圖像上傳到 GPU 存儲器。最后,使用 scale_npp 縮放圖像并在 GPU 上編碼。

ffmpeg -vsync 0 -c:v h264_cuvid -i input.264-vf "fade,hwupload_cuda,scale_npp=1280:720"-c:v h264_nvenc output.264

多 -GPU

當在一個系統(tǒng)中使用多個 GPUs 時,編碼和解碼工作必須顯式地分配給 GPU 。 GPUs 由其索引號標識;默認情況下,所有工作都在索引為 0 的 GPU 上執(zhí)行。使用以下命令獲取系統(tǒng)中所有 NVIDIA GPUs 及其相應的 ID 號的列表:

ffmpeg -vsync 0 -i input.mp4 -c:v h264_nvenc -gpu list -f null –

一旦知道了索引,就可以使用-hwaccel_device索引標志來設置解碼和編碼的活動 GPU 。在下面的例子中,工作將在索引為 1 的 GPU 上執(zhí)行。

ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 1 -c:v h264_cuvid -i input.mp4-c:a copy -c:v h264_nvenc -b:v 5M output.mp4

優(yōu)化

為了獲得最佳的吞吐量,所有的編碼器和解碼器單元都應該被盡可能地利用。 nvidia-smi 可用于生成有關 NVENC 、 NVDEC 和一般 GPU 利用率的實時信息。

nvidia-smi dmon nvidia-smi -q -d UTILIZATION

根據(jù)這些結果可以采取多種措施。如果編碼器利用率低, MIG 可以引入另一個轉(zhuǎn)碼管道,該管道使用 CPU 解碼和 NVENC 編碼來為硬件編碼器生成額外的工作負載。

使用 CPU 篩選器時, PCIe 帶寬 MIG ht 成為瓶頸。如果可能,篩選器應在 GPU 上運行。 FFmpeg 中有幾個 CUDA 過濾器,可以用作模板來實現(xiàn)您自己的高性能 CUDA 過濾器。

通過使用 GPU SDK 的 NVIDIA 可視化分析器分析 ffmpeg 應用程序,您可以始終跟蹤主機和設備之間的 GPU 利用率和內(nèi)存?zhèn)鬏敗V恍鑶印?Run application to generateCPU andGPU timeline ”,然后選擇帶有相關 CLI 選項的 ffmpeg 應用程序。圖 5 說明了應用程序

圖 5 :

綠松石塊顯示 CUDA 內(nèi)核完成的顏色空間轉(zhuǎn)換,而黃色塊顯示主機和設備之間的內(nèi)存?zhèn)鬏?。使?visualprofiler ,用戶可以輕松地跟蹤在 GPU 上執(zhí)行的操作,例如 CUDA 加速的過濾器和數(shù)據(jù)傳輸,以確保不會執(zhí)行過多的內(nèi)存拷貝。

通過使用 --disable-stripping CLI 選項編譯 ffmpeg 來收集 CPU – 端性能統(tǒng)計信息,以啟用性能分析。

這可以防止編譯器剝離函數(shù)名,以便像 Gprof 或 visualstudioprofiler 這樣的商品探查器可以收集性能統(tǒng)計信息。 CPU 在硬件加速開啟的情況下,負載水平應較低,并且大部分時間應花費在視頻代碼 SDK API 調(diào)用中,這些調(diào)用標記為“外部代碼因為函數(shù)名從驅(qū)動程序庫中被刪除。圖 6 顯示了一個示例屏幕截圖。

圖 6 : visualstudio 的 ffmpeg 性能評測

進一步閱讀

有關如何使用 FFmpeg 的更多示例以及可用的高級質(zhì)量設置,請查看“ 使用 FFmpeg 和 NVIDIA GPU 硬件加速 “向?qū)А?/p>

結論

FFmpeg 是一個強大而靈活的開源視頻處理庫,具有硬件加速的解碼和編碼后端。它允許快速的視頻處理和完整的 NVIDIA GPU 硬件支持,只需幾分鐘。 Gprof 、 visualprofiler 和 microsoftvisualstudio 等商品開發(fā)工具可以用于精細的性能分析和調(diào)優(yōu)。看看 ffmpeg 源 試試吧!

關于作者

俄羅斯南部羅曼大學( Rostov-on-Don , 2012 )和羅曼大學應用數(shù)學碩士學位。之后,他在俄羅斯三星研發(fā)院( 2012-2015 )、英特爾公司( 2015-2017 )工作。目前,他在莫斯科擔任開發(fā)技術工程師。他的研究興趣包括視頻編碼、高性能和 GPGPU 。

Stefan Schoenefeld 是 DevTech Engeniner 和 NVIDIA 專業(yè)解決方案組的經(jīng)理,他和他的團隊致力于幫助媒體和娛樂、電信和其他行業(yè)的開發(fā)人員開發(fā)和改進視頻和圖像處理、機器學習和視頻轉(zhuǎn)碼的高速應用程序。他擁有烏爾姆大學工程、計算機科學和心理學系的計算機科學文憑。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    5309

    瀏覽量

    106476
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4949

    瀏覽量

    131323
  • CUDA
    +關注

    關注

    0

    文章

    123

    瀏覽量

    14132
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【EASY EAI Orin Nano開發(fā)板試用體驗】04-編譯及安裝帶有RKMPP的ffmpeg

    1080P的H264編碼視頻。 然后我們使用ffmpeg的硬編碼來進行轉(zhuǎn)碼。 ffmpeg -vcodec h264_mpp -i test.mp4 -vcodec h264_mpp -s 1280x720
    發(fā)表于 07-20 19:21

    國際首創(chuàng)新突破!中國團隊以存算一體排序架構攻克智能硬件加速難題

    2025 年 6 月 25 日,北京大學團隊在智能計算硬件方面取得領先突破,國際上首次實現(xiàn)了基于存算一體技術的高效排序硬件架構 (A fast and reconfigurable
    的頭像 發(fā)表于 07-02 16:50 ?224次閱讀
    國際首創(chuàng)新突破!中國團隊以存算一體排序架構攻克智能<b class='flag-5'>硬件加速</b>難題

    推動硬件輔助驗證平臺增長的關鍵因素

    硬件加速和基于FPGA的原型設計誕生于1980年代中期,開發(fā)者將當時初露頭角的現(xiàn)場可編程門陣列(FPGA)率先應用于硅前設計的原型驗證,由此催生了一種全新的驗證工具,打破了軟件仿真的主導局面。
    的頭像 發(fā)表于 06-11 14:42 ?438次閱讀
    推動<b class='flag-5'>硬件</b>輔助驗證平臺增長的關鍵因素

    2D圖形渲染緩慢怎么加快?

    到 glReadPixels (慢?。簺]有可用的 GL 實現(xiàn)” 搜索表明這可能是因為未啟用硬件加速。 有誰知道如何檢查是否啟用了硬件加速?或者,如果我可能缺少一些應該包含的 Yocto 軟件包? 謝謝。
    發(fā)表于 04-02 06:46

    ffmpeg可以移植到SMT32H7嗎?

    找不到相關資料,ffmpeg移植到stm32的資源
    發(fā)表于 03-14 07:44

    數(shù)據(jù)中心中的FPGA硬件加速

    ? 再來看一篇FPGA的綜述,我們都知道微軟包括國內(nèi)的云廠商其實都在數(shù)據(jù)中心的服務器中部署了FPGA,所以這篇論文就以數(shù)據(jù)中心的視角,來看下FPGA這個硬件加速器。 還是一樣,想要論文原文的可以私信
    的頭像 發(fā)表于 01-14 10:29 ?667次閱讀
    數(shù)據(jù)中心中的FPGA<b class='flag-5'>硬件加速</b>器

    《CST Studio Suite 2024 GPU加速計算指南》

    許可證模型的加速令牌或SIMULIA統(tǒng)一許可證模型的SimUnit令牌或積分授權。 4. GPU計算的啟用 - 交互式模擬:通過加速對話框啟用,打開求解器對話框,點擊“加速”按鈕,打開“硬件
    發(fā)表于 12-16 14:25

    支持5點手寫硬件加速視頻演示-VS680與智慧教室解決方案

    硬件
    深蕾半導體
    發(fā)布于 :2024年12月03日 16:01:19

    基于Xilinx XCKU115的半高PCIe x8 硬件加速

    基于Xilinx XCKU115的半高PCIe x8 硬件加速卡,支持2x72bit(數(shù)據(jù)位寬64bit+ECC)DDR4存儲,數(shù)據(jù)傳輸速率 2400Mb/s。DDR4單簇容量4GB,兩組總?cè)萘繛?GB
    的頭像 發(fā)表于 11-14 11:30 ?811次閱讀
    基于Xilinx XCKU115的半高PCIe x8 <b class='flag-5'>硬件加速</b>卡

    FPGA加速深度學習模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學習模型是當前硬件加速領域的一個熱門研究方向。以下是一些FPGA加速深度學習模型的案例: 一、基于FPGA的AlexNet卷積運算加速 項目名稱
    的頭像 發(fā)表于 10-25 09:22 ?1248次閱讀

    RISC-V跑AI算法能加速嗎?

    現(xiàn)在好多ARM單片機都帶機器學習加速,RISC-V有這方面的硬件加速嗎?
    發(fā)表于 10-10 22:14

    TDA4VM上的硬件加速運動恢復結構算法

    電子發(fā)燒友網(wǎng)站提供《TDA4VM上的硬件加速運動恢復結構算法.pdf》資料免費下載
    發(fā)表于 09-24 11:39 ?0次下載
    TDA4VM上的<b class='flag-5'>硬件加速</b>運動恢復結構算法

    AM62A SoC通過硬件加速視覺處理改進條形碼讀取器

    電子發(fā)燒友網(wǎng)站提供《AM62A SoC通過硬件加速視覺處理改進條形碼讀取器.pdf》資料免費下載
    發(fā)表于 09-04 09:52 ?0次下載
    AM62A SoC通過<b class='flag-5'>硬件加速</b>視覺處理改進條形碼讀取器

    適用于數(shù)據(jù)中心應用中的硬件加速器的直流/直流轉(zhuǎn)換器解決方案

    電子發(fā)燒友網(wǎng)站提供《適用于數(shù)據(jù)中心應用中的硬件加速器的直流/直流轉(zhuǎn)換器解決方案.pdf》資料免費下載
    發(fā)表于 08-26 09:38 ?0次下載
    適用于數(shù)據(jù)中心應用中的<b class='flag-5'>硬件加速</b>器的直流/直流轉(zhuǎn)換器解決方案

    圖形圖像硬件加速器卡設計原理圖:270-VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡

    擴展。軟件支持windows,Linux操作系統(tǒng)。Net FPGA , XC7VX690T板卡 , 軟件無線電處理平臺 , 圖形圖像硬件加速
    的頭像 發(fā)表于 08-06 10:16 ?962次閱讀
    圖形圖像<b class='flag-5'>硬件加速</b>器卡設計原理圖:270-VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡