『heqingchun-Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速』

Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速

一、準備文件

注:可直接下載我上傳的CSDN資源,然后直接跳到"一"中的第"3"項"將文件按以下順序存放"。
ffmpeg源碼:音視頻開發+ffmpeg+編譯所需資源文件
其他文件:音視頻開發+ffmpeg+x86/Arm+編譯所需庫文件(fdk-aac-2.0.2,lame-3.99.5,opencore)
nvidia硬件加速文件:音視頻開發+ffmpeg+x86/Arm+編譯所需文件(使用nvidia硬件加速)

1.ffmpeg源碼下載

官網下載
網址:

http://ffmpeg.org/download.html#releases

操作:
點擊FFmpeg 4.4.3 “Rao"下的"Download xz tarball”
下載得到ffmpeg-4.4.3.tar.xz壓縮文件
注:本教程使用的ffmpeg4.4.3,官網找不到也可以使用其他版本。

2.其他文件

(1)fdk-aac-2.0.2.tar.gz

官網下載
網址:

https://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html
(2)lame-3.99.5.tar.gz

官網下載
網址:

https://sourceforge.net/projects/lame/files/lame/3.99/
(3)opencore-amr-0.1.6.tar.gz

官網下載
網址:

https://sourceforge.net/projects/opencore-amr/files/opencore-amr/
(4)nv-codec-headers.zip

執行

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

3.將文件按以下順序存放

新建"ffmpeg"目錄與"ffmpegOtherFiles"目錄

mkdir ffmpeg && \
mkdir -p ffmpeg/ffmpegOtherFiles

"ffmpeg-4.4.3.tar.xz"放入ffmpeg目錄
“fdk-aac-2.0.2.tar.gz”,“lame-3.99.5.tar.gz”,"opencore-amr-0.1.6.tar.gz"放入ffmpegOtherFiles目錄
"nv-codec-headers.zip"放入ffmpeg目錄

二、更新、安裝基礎依賴

sudo apt update && \
sudo apt upgrade -y && \
sudo apt install -y build-essential cmake python

三、安裝configure依賴

1.終端apt依賴

sudo apt install -y gnutls-dev \
libass-dev \
libdrm-dev \
libopus-dev \
libpulse-dev \
libspeex-dev \
libtheora-dev \
libtwolame-dev \
libv4l-dev \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libxvidcore-dev \
libopenal-dev \
libomxil-bellagio-dev \
libxcb1-dev \
libsdl2-dev \
libva-dev \
libvdpau-dev

2.其他依賴

進入"ffmpegOtherFiles"目錄

cd ffmpeg/ffmpegOtherFiles

解壓編譯安裝依賴

tar -xvf fdk-aac-2.0.2.tar.gz && \
cd fdk-aac-2.0.2 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf lame-3.99.5.tar.gz && \
cd lame-3.99.5 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf opencore-amr-0.1.6.tar.gz && \
cd opencore-amr-0.1.6 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install

3.nvidia硬件加速

cd ffmpeg
unzip nv-codec-headers.zip
cd nv-codec-headers
make -j $(nproc)
sudo make install

四、配置

1.解壓文件

cd ffmpeg
tar -xvf ffmpeg-4.4.3.tar.xz
cd ffmpeg-4.4.3
sed -i "s/compute_30,code=sm_30/compute_86,code=sm_86/g" configure

注:電腦顯卡為3050,所以是86,需要根據你的顯卡算力進行修改
可在此網站查看:顯卡算力查看

2.開始配置

./configure --prefix=/usr/local/ffmpeg \
--disable-debug \
--disable-doc \
--disable-static \
--enable-cuda-nvcc \
--enable-cuvid \
--enable-libdrm \
--enable-ffplay \
--enable-gnutls \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libnpp \
--enable-libopencore_amrnb \
--enable-libopencore_amrwb \
--enable-libopus \
--enable-libpulse \
--enable-sdl2 \
--enable-libspeex \
--enable-libtheora \
--enable-libtwolame \
--enable-libv4l2 \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libxcb \
--enable-libxvid \
--enable-nonfree \
--enable-nvenc \
--enable-omx \
--enable-openal \
--enable-opencl \
--enable-runtime-cpudetect \
--enable-shared \
--enable-vaapi \
--enable-vdpau \
--enable-version3 \
--enable-xlib \
--extra-cflags=-I/usr/local/cuda/include \
--extra-ldflags=-L/usr/local/cuda/lib64 \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--disable-asm \
--disable-x86asm \
--extra-cflags=-fPIC \
--toolchain=hardened \
--disable-stripping \
--extra-cflags=-I/usr/local/include/ffnvcodec

五、編譯安裝

1.編譯

make -j $(nproc)

2.安裝

sudo make install

六、配置環境

1.鏈接

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/bin/ffplay && \
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/local/bin/ffplay

2.庫

寫入設置

sudo sh -c "echo '/usr/local/ffmpeg/lib' >> /etc/ld.so.conf.d/ffmpeg.conf"

更新設置

sudo ldconfig

七、驗證安裝

查看ffmpeg支持信息

ffmpeg -hwaccels

執行結果如下:

ffmpeg version 4.4.3 Copyright (c) 2000-2022 the FFmpeg developersbuilt with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)configuration: --prefix=/usr/local/ffmpeg --disable-debug --disable-doc --disable-static --enable-cuda-nvcc --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libnpp --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --disable-asm --disable-x86asm --extra-cflags=-fPIC --toolchain=hardened --disable-stripping --extra-cflags=-I/usr/local/include/ffnvcodeclibavutil      56. 70.100 / 56. 70.100libavcodec     58.134.100 / 58.134.100libavformat    58. 76.100 / 58. 76.100libavdevice    58. 13.100 / 58. 13.100libavfilter     7.110.100 /  7.110.100libswscale      5.  9.100 /  5.  9.100libswresample   3.  9.100 /  3.  9.100libpostproc    55.  9.100 / 55.  9.100
Hardware acceleration methods:
vdpau
cuda(使用nvidia硬件加速才有)
vaapi
drm
opencl

編解碼測試(使用nvidia硬件加速):
HEVC->H.264

ffmpeg -vcodec hevc_cuvid -an -gpu 0 -i <vidoe_path> -vcodec h264_nvenc -an -gpu 0 -y output.mp4

H.264->HEVC

ffmpeg -vcodec h264_cuvid -an -gpu 0 -i <video_path> -vcodec hevc_nvenc -an -gpu 0 -y output.mp4

Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速-完畢

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162429.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pgsql常用命令

Postgresql數據庫常用命令 1、連接數據庫, 默認的用戶和數據庫是postgres psql -h host -p port -U user -d dbname 2、執行sql文件 psql -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -d safe_browser -f xxxx.sql \i /xxxxx/xxx/xxxxxx.sql 3、切換數據庫,相當于mysql的use d…

Ajax技

Ajax的特點 異步提交&#xff1a;Ajax采用異步通信方式&#xff0c;能夠在頁面無需重新加載的情況下向服務器發送請求并接收響應數據&#xff0c;提升了用戶體驗。無需插件&#xff1a;Ajax是基于標準瀏覽器的Javascript和XMLHttpRequest對象實現的&#xff0c;無需安裝插件或…

打開和關閉conda,激活和關閉conda,詳解退出conda環境

Python編程技巧&#xff1a;詳解退出conda環境 https://www.python100.com/html/110499.html # 創建虛擬環境~/anaconda3/bin/conda create -n name python3.6 # 激活虛擬環境 source ~/anaconda3/bin/activate name # 查看所有環境 conda env list # 激活虛擬環境 conda activ…

使用JVS低代碼表單引擎高效管理文件,實現個性化需求

在數字化、信息化的時代&#xff0c;文件上傳與管理功能已經成為了各類應用系統的標配。無論是在辦公自動化、項目管理還是內容管理系統中&#xff0c;我們都希望能輕松、高效地完成文件的上傳、查看和管理。JVS低代碼表單引擎提供了文件類組件。無論是文件類型、大小的限制&am…

ubuntu Setforeground 前臺應用切換

場景分析 有這樣一個系統&#xff0c;一個服務主進程用于接收指令&#xff0c;其它服務是獨立的gui 程序&#xff0c;服務進程根據命令將對應的gui 程序切換到前臺。 windows 平臺有Setforeground 這個api&#xff0c;可以根據進程ID&#xff0c;將某個應用的窗口切換到前臺。…

SpringBoot整合Redis,redis連接池和RedisTemplate序列化

SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置類RedisConfig&#xff0c;實現RedisTemplate序列化1.4 代碼測試 2、SpringBoot整合redis幾個疑問&#xff1f;2.1、Redis 連接池講解2.2、RedisTemplate和StringRedisTemplate 3、RedisTemp…

UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“

? 目錄 uniapp進行打包 使用上架工具appuplode進行發包 1.登錄appuploder軟件 2.登陸開發者App Store后臺 uniapp進行打包 在HBuilder X編輯器中打開需要打包的項目&#xff0c;然后點擊上面菜單欄中 發行 > 原生App-云打包&#xff0c;對以下彈出的彈窗進行內容填寫 ?…

競賽python區塊鏈實現 - proof of work工作量證明共識算法

文章目錄 0 前言1 區塊鏈基礎1.1 比特幣內部結構1.2 實現的區塊鏈數據結構1.3 注意點1.4 區塊鏈的核心-工作量證明算法1.4.1 拜占庭將軍問題1.4.2 解決辦法1.4.3 代碼實現 2 快速實現一個區塊鏈2.1 什么是區塊鏈2.2 一個完整的快包含什么2.3 什么是挖礦2.4 工作量證明算法&…

Java計算時間差,距結束還有幾天幾小時幾分鐘

文章目錄 1、寫法2、備份3、LocalDate、LocalDateTime、Date、String互轉 1、寫法 //靜態方法&#xff0c;傳入年月日時分秒 LocalDateTime startTime LocalDateTime.of(2023, 11, 22, 15, 09, 59); LocalDateTime endTime LocalDateTime.of(2023, 11, 30, 0, 0, 0); //計算…

Java基層衛生健康云綜合管理(云his)系統源碼

云HIS&#xff08;Cloud-Based Healthcare Information System&#xff09;是基于云計算的醫院健康衛生信息系統。它運用云計算、大數據、物聯網等新興信息技術&#xff0c;按照現代醫療衛生管理要求&#xff0c;在一定區域范圍內以數字化形式提供醫療衛生行業數據收集、存儲、…

indexedDB存儲

使用 setDBData({ id: name, value: 張三, expire: new Date().getTime() 10000 }, info, infoDB) console.log(getDBData(name, info, infoDB)); 添加或更新數據 async function setDBData(data,storeName "storeName",dbName "dbName",version ) {c…

educoder中Hive綜合應用案例 — 用戶搜索日志分析

第1關:2018年點擊量最高的10個網站域名 ---------- 禁止修改 ----------drop database if exists mydb cascade; ---------- 禁止修改 -------------------- begin ---------- ---創建mydb數據庫 create database mydb;---使用mydb數據庫 use mydb;---創建表db_search create…

CVE-2023-27524:Apache Superset未授權訪問漏洞復現

文章目錄 ?Apache Superset 未授權訪問漏洞(CVE-2023-27524)復現0x01 前言0x02 漏洞描述0x03 影響版本0x04 漏洞環境0x05 漏洞復現1.訪問漏洞環境2.漏洞復現 0x06 修復建議 ?Apache Superset 未授權訪問漏洞(CVE-2023-27524)復現 0x01 前言 免責聲明&#xff1a;請勿利用文…

在線工具收集

在線工具收集 1、在線P圖 https://www.photopea.com/ 一款類似于PS的在線摳圖軟件 ①去除圖片中的文字&#xff0c;并填充背景色 第一步&#xff1a;使用矩形選中要清除的文字 第二步&#xff1a;點擊編輯選擇填充 第三步&#xff1a;選擇內容識別&#xff0c;保留透明區域…

操作系統(七)| 設備管理-- 端口 驅動程序 基本I/O控制 磁盤I/O

文章目錄 1 設備管理概述1.1 系統總線結構1.2 設備控制器通用結構1.3 I/O設備的模型 2 I/O端口2.1 尋址方式 3 驅動程序4 基本I/O控制方式4.1 程序直接控制4.2 中斷I/O方式4.3 DMA方式4.4 I/O通道控制方式 5 I/O管理中的重要思想5.1 設備獨立性5.2 SPOOLing技術5.3 I/O軟件的多…

c語言 結構數組

為什么要使用結構數組&#xff1f; 例如有一種情況&#xff0c;我們需要存儲5名學生的數據。我們可以使用下面給出的結構來存儲它。 示例 #include<stdio.h> struct student { char name[20]; int id; float marks; }; void main() {struct student s1,s2,…

前端Date對象的使用錦集

Date 對象用于處理日期與時間。 創造對象 var d new Date(); var d new Date(milliseconds); // 參數為毫秒 var d new Date(dateString); var d new Date(year, month, day, hours, minutes, seconds, milliseconds);方法 getDate() 獲取當前日期對象是幾日(1-31) cons…

C++標準模板(STL)- 類型支持 (類型修改,添加 const 或/與 volatile 限定符到給定類型,std::add_cv)

類型特性 類型特性定義一個編譯時基于模板的結構&#xff0c;以查詢或修改類型的屬性。 試圖特化定義于 <type_traits> 頭文件的模板導致未定義行為&#xff0c;除了 std::common_type 可依照其所描述特化。 定義于<type_traits>頭文件的模板可以用不完整類型實例…

SAP的四種計量單位

在SAP中物料創建后&#xff0c;一旦發生業務&#xff0c;其基本計量單位便很難修改。由于單位無法滿足業務要求&#xff0c;往往會要求新建一個物料替代舊物料。這時候除了要將舊物料上所有的未清業務刪除外&#xff0c;還需要替換工藝與BOM中的舊物料。特別是當出現舊物料存在…

Linux學習筆記-Ubuntu下使用Crontab設置定時任務

文章目錄 一、概述二、基于crontab的設置2.1 基本命令說明2.2 使用-e指令編輯命令2.2.1 進入編輯模式2.2.2 指令信息格式2.2.4 開啟日志1) 修改rsyslog配置文件2) 重啟rsyslog3) 查看日志 2.2.3 設置后之后重啟服務 三、示例3.1 每隔一分鐘往文件中日期3.2 使用-l查看任務列表3…