国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速

這篇具有很好參考價(jià)值的文章主要介紹了ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

使用cpu進(jìn)行軟編解碼時(shí),cpu效率低并且占用高。使用硬件加速,能夠明顯降低CPU的占用,參看博客 ffmpeg學(xué)習(xí)(16)AVDevice使用。 這里以使用英偉達(dá)gpu進(jìn)行h264編解碼加速為例說明,其他平臺(tái)類似。

1、winodws硬件加速支持

在windows平臺(tái)直接下載官方的預(yù)編譯ffmpeg、lib開發(fā)包,都已經(jīng)支持了英偉達(dá)顯卡硬件加速。使用命令ffmpeg.exe -hide_banner true -codecs |findstr h264,查詢結(jié)果如下
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
可以看到英偉達(dá)硬件支持的解碼器有 h264_cuvid,編碼器有h264_nvenc、nvenc_h264、nvenc。

2、linux下硬件加速支持

使用sudo apt get install ffmpeg后是默認(rèn)不支持的硬件加速的,查看支持使用命令 ffmpeg -hide_banner true -codecs | grep h264,結(jié)果如下
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
并沒有出現(xiàn)同windows下類似帶有nv或者cu字樣的的編解碼器名稱。
為了使用硬件加速功能,需要從源代碼進(jìn)行編譯,添加硬件加速支持。

編譯ffnvcodec

再nvidia硬件上進(jìn)行ffmpeg加速,需要準(zhǔn)備ffnvcodec。

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers 
sudo make install 

編譯環(huán)境

sudo apt-get install build-essential yasm cmake libnuma1 libnuma-dev

后面編譯ffmpeg源碼時(shí)可以根據(jù)缺少項(xiàng)再安裝。

ffmpeg編譯

可以使用git命令 git clone https://git.ffmpeg.org/ffmpeg.git /ffmpeg 拉取最新的ffmpeg分支,這里以ffmpeg n4.0.2版本為例
編譯與安裝命令

./configure --enable-shared --enable-nonfree --enable-cuda-sdk --enable-libnpp \
--extra-cflags=-I/usr/local/cuda/include \
--extra-ldflags=-L/usr/local/cuda/lib64 \
--prefix=/home/wanggao/software/FFmpeg-n4.0.2/install

make -j8
sudo make install

其他完整的編譯選項(xiàng)

./configure --enable-shared --enable-nonfree --enable-cuda-sdk --enable-libnpp \
--extra-cflags=-I/usr/local/cuda/include \
--extra-ldflags=-L/usr/local/cuda/lib64 \
--prefix=/home/wanggao/software/FFmpeg-n4.0.2/install \
\
--disable-doc \
--disable-htmlpages \
--disable-podpages \
--disable-txtpages \
--disable-manpages \
\
--enable-gpl \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \

注意:上述命令行編譯了所有內(nèi)容,導(dǎo)致編譯生成的庫較大,可以根據(jù)具體情況編譯需要的模塊。
先使用 –disable-all 禁用所有模塊,再添加 –enable-xxxxx 開啟xxxxx模塊
上面添加了H.264的支持。

編譯完成后,再次命令 ffmpeg -hide_banner true -codecs | grep 264 查看支持情況
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
這里明顯對(duì)nvidia的硬件有了特定的編碼器 h264_cuvid、解碼器nvenc和h264_nvenc。

查看相關(guān)編解碼器的信息,例如查看解碼器h264_cuvid信息,如下
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
再查看編碼器h264_nvenc的信息(還包含preset、profile、level以及其他更多編碼參數(shù)),僅列出支持的像素編碼,如下圖
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速

3、linux下硬件加速使用、問題解決

在ffmpeg源代碼中可以使用 如下代碼

AVCodec *enc = avcodec_find_encoder_by_name("h264_nvenc");

AVCodec *dec = avcodec_find_decoder_by_name("h264_cuvid");

正常運(yùn)行時(shí),發(fā)現(xiàn)cpu占用降低,會(huì)有g(shù)pu的占用。

可能出現(xiàn)的的問題

在編碼程序中,設(shè)定編碼器h264_nvenc,運(yùn)行程序報(bào)錯(cuò)

[h264_nvenc @ 0x7fad9030f100] Driver does not support the required nvenc API version. Required: 11.0 Found: 9.0
[h264_nvenc @ 0x7fad9030f100] The minimum required Nvidia driver for nvenc is 390.25 or newer

這種錯(cuò)誤明確提示驅(qū)動(dòng)版本不支持。我們可以在nv-codec-headers/README文件中有要求說明

FFmpeg version of headers required to interface with Nvidias codec APIs.

Corresponds to Video Codec SDK version 11.0.10.

Minimum required driver versions:
Linux: 455.28 or newer
Windows: 456.71 or newer

查看本機(jī)的驅(qū)動(dòng)版本已經(jīng)gpu型號(hào),驅(qū)動(dòng)版本為 418.67, 是低于要求版本的,需要更新驅(qū)動(dòng)。
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
但是我們注意到,機(jī)器的顯卡名稱不全。首先使用 lspci | grep -i vga 查看顯卡的PCI ID號(hào),為 NVIDIA Corporation Device 1e04 (rev a1)。

通過可以通過英偉達(dá)顯卡PCI ID查詢
列表 http://pci-ids.ucw.cz/read/PC/10de
查詢 http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci
ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速
知道了顯卡類型,之后就是去官網(wǎng)下載安裝合適版本驅(qū)動(dòng)了。

安裝驅(qū)動(dòng),測(cè)試代碼,一切OK。文章來源地址http://www.zghlxwxcb.cn/news/detail-408225.html

到了這里,關(guān)于ffmpeg學(xué)習(xí) 源代碼編譯、英偉達(dá)硬件加速的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • blender源代碼編譯運(yùn)行

    blender源代碼編譯運(yùn)行

    其實(shí)在blender官網(wǎng)上已經(jīng)給出了編譯步驟https://wiki.blender.org/wiki/Building_Blender/Windows,由于在源碼編譯的過程中還遇到了很多問題,特此記錄一下。 Visual Studio2019或者2022(至少選擇【Desktop Development with C++】),我自己是下載的2022版,這里記錄了下載的方法及過程https://blog.csdn.net

    2024年02月02日
    瀏覽(90)
  • Python反編譯exe獲取封裝源代碼

    Python反編譯exe獲取封裝源代碼

    先把exe和pyinstxtractor放在一起 會(huì)得到一個(gè)文件夾 安裝解析庫 一共有兩個(gè),還有個(gè)struct 用sublime打開兩個(gè)文件,看到一堆二進(jìn)制,其中struct是多一行的,把struct的第一行復(fù)制到前一個(gè)文件中 uncompyle6 C:UserslenovoDesktop20223102412-李凌飛exemerge_ALL_ALL_V1.0.exe_extractedmerge_ALL_ALL_V1.0

    2024年01月19日
    瀏覽(20)
  • mysql源代碼編譯安裝(可自擬版本)

    mysql源代碼編譯安裝(可自擬版本)

    centOS7 mysql5.6.40為例 關(guān)閉防火墻的條件下 1.yum安裝 2.rpm查詢一下 3.創(chuàng)建mysql用戶,用于授權(quán)目錄 -s /sbin/nologin 不允許用戶進(jìn)行任何交互操作 -M 不要自動(dòng)創(chuàng)建用戶的 home 目錄 mysql 為用戶名 查看用戶是否已經(jīng)存在 ?在想要指定目錄下載 這里我以/opt/mysql為例 1.下載源碼 可以換別

    2024年02月14日
    瀏覽(24)
  • ADSP-21489的開發(fā)詳解:Norflash的硬件設(shè)計(jì)及程序燒寫詳解(含源代碼)

    ADSP-21489的開發(fā)詳解:Norflash的硬件設(shè)計(jì)及程序燒寫詳解(含源代碼)

    編者的話 Flash 編程與燒寫,原本應(yīng)該是開發(fā)的最后一步,當(dāng)所有程序都做好了,在線編譯運(yùn)行正常,才會(huì)通過 Flash 編程,生成二進(jìn)制的可執(zhí)行文件 LDR,再通過 JTAG 仿真器將 LDR 文件燒寫到 Flash 中,上電 BOOT 實(shí)現(xiàn)脫機(jī)運(yùn)行的功能。 我們?yōu)楹伟堰@個(gè)章節(jié)安排在第二個(gè)階段,是因

    2023年04月24日
    瀏覽(20)
  • X86架構(gòu)下交叉編譯arm64源代碼

    glibc在/lib(/lib32 /lib64)目錄下的.so文件為libc.so.6 glibc是GNU發(fā)布的libc庫,即c運(yùn)行庫。glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫都會(huì)依賴于glibc。glibc除了封裝linux操作系統(tǒng)所提供的系統(tǒng)服務(wù)外,它本身也提供了許多其它一些必要功能服務(wù)的實(shí)現(xiàn)。由于 glibc 囊括了幾乎所有

    2023年04月21日
    瀏覽(23)
  • Java源代碼是如何編譯,加載到內(nèi)存中的?

    Java源代碼是如何編譯,加載到內(nèi)存中的?

    相信許多開發(fā)同學(xué)看過《深入理解java虛擬機(jī)》,也閱讀過java虛擬機(jī)規(guī)范,書籍和文檔給人的感覺不夠直觀,本文從一個(gè)簡(jiǎn)單的例子來看看jvm是如何工作的吧。 本文所有操作均在mac上進(jìn)行。 示例代碼采用最常見的雙重檢索單例模式: 經(jīng)過編譯后,我們得到class文件,然后用

    2024年02月13日
    瀏覽(25)
  • Linux Red Hat 9.0使用源代碼編譯安裝Nginx

    Linux Red Hat 9.0使用源代碼編譯安裝Nginx

    目錄 前言 編譯安裝Nginx源代碼 下載安裝必須的依賴項(xiàng)(GCC編譯器,GNU make工具,PCRE庫和zlib庫) 創(chuàng)建nginx組和用戶賬戶 進(jìn)入瀏覽器,拉取nginx源碼(Nginx 1.20.2版本) 上傳到Red Hat(此處上傳在/home/zyz下) 移動(dòng)源碼到root用戶下 解壓 進(jìn)入nginx-1.20.2目錄下 檢查平臺(tái)安裝環(huán)境 執(zhí)行

    2024年03月10日
    瀏覽(26)
  • 銀河麒麟V10 SP1 ARM編譯QT源代碼

    銀河麒麟V10 SP1 ARM編譯QT源代碼

    最近因?yàn)橐恍┦虑樾枰阢y河麒麟ARM系統(tǒng)上[銀河麒麟V10 SP1 ARM 2203 linux5.4.96-11]安裝QT5.12.4版本,由于QT官方不提供ARM版的安裝包,無奈只能自己手動(dòng)編譯源代碼。 后續(xù)補(bǔ)充:實(shí)際上我要裝的是Qt5.14.2 而不是 5.12.4,不過同樣的環(huán)境下Qt5.14.2也編譯成功了。 這是一篇個(gè)人筆記,對(duì)

    2024年02月05日
    瀏覽(33)
  • 【Java可執(zhí)行命令】(一)編譯工具javac:從源代碼到字節(jié)碼,深入解析Java編譯工具 javac ~

    【Java可執(zhí)行命令】(一)編譯工具javac:從源代碼到字節(jié)碼,深入解析Java編譯工具 javac ~

    Java 編程語言的可執(zhí)行命令程序 javac 是 Java Development Kit (JDK) 的一部分,旨在將 Java 源代碼編譯為可執(zhí)行的字節(jié)碼文件。 javac 的設(shè)計(jì)目的是為了支持 Java 的跨平臺(tái)特性,使開發(fā)人員能夠編寫一次代碼,然后在不同的操作系統(tǒng)上運(yùn)行。 javac 是 Java 編譯器的命令行前端,它將 Ja

    2024年02月16日
    瀏覽(20)
  • RK3568平臺(tái)開發(fā)系列講解(環(huán)境篇)10min帶你獲取、了解與編譯U-Boot源代碼

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包