版權(quán)聲明:本文為博主翻譯文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/Tosonw/article/details/90178195
原文鏈接:https://trac.ffmpeg.org/wiki/HWAccelIntro
一、FFmpeg:HWAccelIntro
原文(英文):https://trac.ffmpeg.org/wiki/HWAccelIntro
許多平臺提供對專用硬件的訪問,以執(zhí)行一系列與視頻相關(guān)的任務(wù)。使用這樣的硬件允許諸如解碼,編碼或過濾之類的一些操作更快地完成或使用更少的其他資源(特別是CPU),但是可能給出不同或較差的結(jié)果,或者施加僅在使用軟件時不存在的附加限制。在類似PC的平臺上,視頻硬件通常集成到GPU(來自AMD,Intel或NVIDIA),而在移動SoC類型平臺上,它通常是獨立的IP核(許多不同的供應(yīng)商)。
硬件解碼器將為軟件解碼器生成等效輸出,但可以使用更少的功率和CPU來實現(xiàn)。功能支持各不相同 - 對于具有許多不同配置文件的更復(fù)雜的編解碼器,硬件解碼器很少實現(xiàn)所有這些(例如,硬件解碼器往往不會在H.264的8位深度處實現(xiàn)YUV 4:2:0以外的任何內(nèi)容)。許多硬件解碼器的一個共同特點是能夠在適合其他組件使用的硬件表面中生成輸出(使用獨立顯卡,這意味著卡片內(nèi)存中的表面而非系統(tǒng)內(nèi)存中的表面) - 這通常對回放很有用因為在渲染輸出之前不需要進一步復(fù)制,并且在某些情況下它也可以與支持硬件表面輸入的編碼器一起使用,以避免在轉(zhuǎn)碼情況下進行任何復(fù)制。
硬件編碼器通常生成的輸出質(zhì)量明顯低于x264等軟件編碼器,但通常速度更快,CPU資源也不多。(也就是說,它們需要更高的比特率來使輸出具有相同的感知質(zhì)量,或者它們以相同的比特率以較低的感知質(zhì)量進行輸出。)
具有解碼和/或編碼能力的系統(tǒng)還可以提供對其他相關(guān)過濾特征的訪問。縮放和逐行掃描等常見的事情,其他后處理可能取決于系統(tǒng)。在硬件表面可用的情況下,這些過濾器通常會作用于它們而不是系統(tǒng)存儲器中的普通幀。
有許多不同的標準化狀態(tài)的API可供使用。FFmpeg提供對其中許多的訪問,并提供不同的支持。
1.平臺API可用性
2.FFmpeg API實現(xiàn)狀態(tài)
與ffmpeg命令行工具一起使用
內(nèi)部hwaccel解碼器通過-hwaccel選項啟用。軟件解碼器正常啟動,但如果它檢測到可在硬件中解碼的流,則它將嘗試將所有重要處理委托給該硬件。如果流在硬件中不可解碼(例如,它是不受支持的編解碼器或配置文件),則它仍將自動在軟件中解碼。如果硬件需要特定設(shè)備才能運行(或需要區(qū)分多個設(shè)備,例如是否有多個圖形卡可用),則可以使用-hwaccel_device選擇一個。
通過使用-codec:v選項設(shè)置特定解碼器來使用外部包裝解碼器。通常它們被命名為codec_api(例如:h264_cuvid)。這些解碼器需要事先知道編解碼器,如果不支持流,則不支持任何軟件回退。
編碼器包裝器由-codec:v選擇。編碼器通常有很多選項 - 有關(guān)詳細信息,請查看特定編碼器的文檔。
硬件過濾器可以像任何其他過濾器一樣用在過濾器圖形中。但請注意,它們可能不支持與軟件過濾器相同的任何格式 - 在這種情況下,可能需要使用hwupload和hwdownload過濾器實例在硬件表面和普通內(nèi)存之間移動幀數(shù)據(jù)。
3.VDPAU
https://http.download.nvidia.com/XFree86/vdpau/doxygen/html/index.html
視頻解碼和演示API為Unix。由NVIDIA開發(fā)的Unix / Linux系統(tǒng)。要啟用此功能,您通常需要分發(fā)中的 libvdpau開發(fā)包和兼容的圖形卡。
注意,VDPAU不能用于解碼內(nèi)存中的幀,壓縮幀由libavcodec發(fā)送到VDPAU支持的GPU設(shè)備,然后可以使用VDPAU API訪問解碼圖像。這不是由FFmpeg的自動完成的,但必須在應(yīng)用程序級別(檢查例如做ffmpeg_vdpau.c通過使用文件ffmpeg.c)。此外,請注意,使用此API無法將解碼后的幀移回RAM,例如,如果您需要再次對解碼幀進行編碼(例如,在服務(wù)器上進行轉(zhuǎn)碼時)。
目前通過libavcodec中的VDPAU支持幾個解碼器,特別是H.264,MPEG-1/2/4和VC-1。
4.VAAPI
https://trac.ffmpeg.org/wiki/Hardware/VAAPI
視頻加速API(VAAPI)是一種非專有且免版稅的開源軟件庫(“l(fā)ibva”)和API規(guī)范,最初由Intel開發(fā),但可與其他設(shè)備結(jié)合使用。
它可用于訪問Intel GPU中的Quick Sync硬件和AMD GPU中的UVD / VCE硬件。見VAAPI。
5.DXVA2
https://msdn.microsoft.com/en-us/library/windows/desktop/cc307941(v=vs.85).aspx
直接-X視頻加速API,由微軟開發(fā)的(支持Windows和Xbox360)。
目前支持幾種解碼器,特別是H.264,MPEG-2,VC-1和WMV 3。
DXVA2硬件加速僅適用于Windows。為了構(gòu)建支持DXVA2的FFmpeg,您需要安裝dxva2api.h頭文件。對于MinGW的,這可以通過進行下載由VLC保持頭和(在例如在包括補丁安裝它的/ usr /包括/)。
對于MinGW64,默認提供dxva2api.h。安裝mingw-w64的一種方法是通過pacman存儲庫,可以使用以下兩個命令之一安裝,具體取決于體系結(jié)構(gòu):
pacman -S mingw-w64-i686-gcc pacman -S mingw-w64-x86_64-gcc12
要啟用DXVA2,請使用–enable-dxva2 ffmpeg配置開關(guān)。
要測試解碼,請使用以下命令:
ffmpeg -hwaccel dxva2 -threads 1 -i INPUT -f null - -benchmark1
6.VideoToolbox
https://developer.apple.com/documentation/videotoolbox
VideoToolbox,只支持在MacOS。H.264解碼在FFmpeg / libavcodec中可用。
7.NVENC / NVDEC
NVENC和NVDEC是NVIDIA的硬件加速編碼和解碼API。他們曾經(jīng)被稱為CUVID。它們可用于Windows和Linux上的編碼和解碼。
NVENC
NVENC可用于H.264和HEVC編碼。FFmpeg通過h264_nvenc和hevc_nvenc編碼器支持NVENC 。要在FFmpeg中啟用它,您需要:
一個支持GPU
支持您的操作系統(tǒng)的驅(qū)動程序
在NVIDIA編解碼器SDK
ffmpeg使用–enable-nvenc配置(如果在配置時檢測到驅(qū)動程序,則為默認值)
注意: FFmpeg對NVIDIA的CUDA / NVENC /
NVDEC相關(guān)庫使用自己稍微修改過的運行時加載程序。如果你從一個錯誤配置抱怨缺少ffnvcodec,這個項目是你所需要的。它有一個帶有安裝目標的工作Makefile:make
install PREFIX = / usr。FFmpeg將查找名為ffnvcodec.pc的
pkg-config文件。確保它在PKG_CONFIG_PATH中。
這意味著在編譯ffmpeg之前運行以下內(nèi)容應(yīng)該足夠了:
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git cd nv-codec-headers sudo make sudo make install1234
編譯后,您可以使用NVENC。
用法示例:
ffmpeg -i input -c:v h264_nvenc -profile high444p -pixel_format yuv444p -preset default output.mp41
您可以使用ffmpeg -h encoder = h264_nvenc或ffmpeg -h encoder = hevc_nvenc查看可用的預(yù)設(shè),其他選項和編碼器信息。
注意:如果您發(fā)現(xiàn)無NVENC功能設(shè)備錯誤,請確保您使用支持的像素格式進行編碼。請參閱上面顯示的編碼器信息。
NVDEC / CUVID
NVDEC為H.264,HEVC,MJPEG,MPEG-1/2/4,VP8 / VP9,VC-1提供解碼器。編解碼器支持硬件變化(見GPU兼容性表)。
請注意,F(xiàn)Fmpeg提供NVDEC和CUVID hwaccel。它們在幀中如何解碼和轉(zhuǎn)發(fā)在內(nèi)存中有所不同。
全套編解碼器僅在Pascal硬件上可用,它增加了VP9和10位支持。關(guān)于NVENC缺少ffnvcodec的說明也適用于NVDEC。
使用NVDEC進行樣本解碼:
ffmpeg -hwaccel nvdec input output1
使用CUVID進行樣本解碼:
./ffmpeg-git -hwaccel cuvid -c:v h264_cuvid -i input output1
CUVID和NVENC的全硬件轉(zhuǎn)碼:
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input -c:v h264_nvenc -preset slow output1
如果編譯了ffmpeg并支持libnpp,則可以使用它將基于GPU的縮放器插入到鏈中:
ffmpeg -hwaccel_device 0 -hwaccel cuvid -i input -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow output.mkv1
該-hwaccel_device選項可用于指定要通過的ffmpeg的hwaccel的使用的GPU。
8.libmfx
libmfx是英特爾的專有庫,用于在Linux和Windows上使用Quick Sync硬件。在Windows上,除了可通過DXVA2 / D3D11VA訪問的功能外,它是使用更高級功能的主要方式,特別是編碼。在Linux上,它具有非常有限的功能集并且難以使用,但對于某些需要最大吞吐量的用例可能會有所幫助。
9.OpenCL
原文(英文):https://www.khronos.org/opencl/
OpenCL的可用于多個濾波器。要構(gòu)建,需要OpenCL 1.2或更高版本的頭文件以及要鏈接到的ICD或ICD加載器 -
建議(但不要求)與ICD加載器鏈接,以便可以在運行時選擇實現(xiàn),而不是建立時間。在運行時,需要一個OpenCL 1.2驅(qū)動程序 -
大多數(shù)GPU制造商將提供一個作為其標準驅(qū)動程序的一部分。CPU實現(xiàn)也可以使用,但可能比直接在ffmpeg中使用本機過濾器慢。
OpenCL可以與其他GPU API互操作,以避免GPU和CPU內(nèi)存之間的冗余副本。支持的方法是:
DXVA2:僅適用于所有平臺的NV12表面。
D3D11:僅限Intel上的NV12紋理。
VAAPI:所有表面類型。
ARM Mali:所有表面類型,通過DRM對象共享。
libmfx:僅通過VAAPI或DXVA2的NV12表面。
10.AMD UVD / VCE
AMD UVD可用于通過Linux上的Mesa中的VDPAU和VAAPI進行解碼。VCE也通過VAAPI對編碼有一些初步支持,但應(yīng)該被認為是實驗性的。
在Windows上,UVD可通過標準DXVA2 / D3D11VA API訪問,而VCE則通過AMF支持。
11.外部資源
multimedia.cx:如何玩硬件加速視頻在Mac:https://multimedia.cx/eggs/mac-hwaccel-video/
libav用戶:硬件加速解碼:https://lists.ffmpeg.org/pipermail/libav-user/2013-September/005463.html
堆棧溢出:如何使用硬件加速與ffmpeg的:https://stackoverflow.com/questions/23289157/how-to-use-hardware-acceleration-with-ffmpeg
二、硬件:VAAPI
原文(英文):https://trac.ffmpeg.org/wiki/Hardware/VAAPI
1.平臺支持
Intel / i965
請參閱QuickSync:https://trac.ffmpeg.org/wiki/Hardware/QuickSync
AMD / Mesa
Mesa VAAPI驅(qū)動程序使用所有最新AMD顯卡和APU中的UVD(統(tǒng)一視頻解碼器)和VCE(視頻編碼引擎)硬件。
所有GCN GPU(自Southern Islands以來)都支持H.264,MPEG-2,MPEG-4第2部分和VC-1解碼。GCN 3(火山島)和H.265 10位與GCN 4(北極群島)一起增加了H.265支持。可能支持也可能不支持較舊的GPU。
默認情況下,由于VAAPI限制,MPEG-4第2部分被禁用(主要的英特爾驅(qū)動程序從未實現(xiàn)它,所以它沒有得到太多測試)。將環(huán)境變量VAAPI_MPEG4_ENABLED設(shè)置為1,無論如何都要嘗試使用它。
H.264編碼正在使用GCN GPU,但仍然不完整。Mesa還沒有其他編解碼器支持編碼。
由于GPU內(nèi)存中的數(shù)據(jù)布局,Mesa中的編碼和隔行掃描支持是不兼容的。默認情況下,幀被分隔為字段,并且支持隔行掃描視頻,但不支持編碼。將環(huán)境變量VAAPI_DISABLE_INTERLACE設(shè)置為1以便能夠使用編碼器(但沒有任何隔行視頻支持)。
2.設(shè)備選擇
需要將libva驅(qū)動程序連接到DRM設(shè)備才能工作。這可以直接連接,也可以通過正在運行的X服務(wù)器連接。在使用Standlone時,通常最好使用DRM渲染節(jié)點(/ dev / dri / render *) - 如果您確實想要處理X內(nèi)的表面(例如,使用DRI2),則僅使用X連接。
在ffmpeg中,可以使用-init_hw_device選項創(chuàng)建命名的全局設(shè)備:
ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD1281
通過解碼hwaccel,可以使用-hwaccel_device選項為每個輸入流提供先前初始化的設(shè)備:
ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_device foo -i ...1
如果只使用一個流,-hwaccel_device也可以直接接受設(shè)備路徑:
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -i ...1
如果過濾器需要設(shè)備(例如,hwupload過濾器),則可以使用-filter_hw_device選項指定過濾器圖中使用的設(shè)備:
ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 -i ... -filter_hw_device foo -filter_complex ...hwupload... ...1
如果您在同一臺計算機上有多個可用設(shè)備(例如,Intel集成GPU和AMD獨立顯卡),則可以同時使用它們來解碼不同的流:
ffmpeg -init_hw_device vaapi=intel:/dev/dri/renderD128 -init_hw_device vaapi=amd:/dev/dri/renderD129 -hwaccel vaapi -hwaccel_device intel -i ... -hwaccel vaapi -hwaccel_device amd -i ...1
(參見< http://www.ffmpeg.org/ffmpeg.html#toc-Advanced-Video-options >有關(guān)這些選項的更多細節(jié))。
最后,在帶有過濾器的單設(shè)備情況下,-vaapi_device選項可能更方便。
ffmpeg -vaapi_device /dev/dri/renderD1281
行為等同于:
ffmpeg -init_hw_device vaapi=vaapi0:/dev/dri/renderD128 -filter_hw_device vaapi01
3.Surface Formats
VAAPI使用的硬件編解碼器無法訪問任意內(nèi)存中的幀數(shù)據(jù)。因此,在使用之前,需要將所有幀數(shù)據(jù)上載到連接到適當設(shè)備的硬件表面。ffmpeg中的所有VAAPI硬件表面都由vaapi pixfmt 表示(但內(nèi)部布局在此處不可見)。
hwaccel解碼器通常以相關(guān)的硬件格式輸出幀,但默認情況下,ffmpeg實用程序?qū)⑤敵鰩螺d到普通內(nèi)存,然后再將它們傳遞給下一個組件。這使得解碼器可以在沒有任何其他選項的情況下更快地進行解碼:
ffmpeg -hwaccel vaapi ... -i input.mp4 -c:v libx264 ... output.mp41
對于其他輸出,選項-hwaccel_output_format可用于指定要使用的格式。這可以是軟件格式(格式可用,取決于驅(qū)動程序),也可以是vaapi硬件格式,表示不應(yīng)下載表面。
例如,要僅解碼并對結(jié)果不執(zhí)行任何操作:
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi ... -i input.mp4 -f null -1
這可以僅用于測試解碼器的速度/ CPU使用(下載操作通常會增加大量額外開銷)。
當解碼器輸出位于硬件表面時,幀將以該形式提供給后續(xù)濾波器或編碼器。該scale_vaapi和deinterlace_vaapi過濾器作用于VAAPI格式的畫面縮放和respecitvely隔行他們。也有一些通用的過濾器- hwdownload,hwupload和hwmap -支持所有硬件格式,包括VAAPI(參見< http://www.ffmpeg.org/ffmpeg-filters.html#hwdownload >)。
例如,采用隔行輸入,解碼,去隔行,縮放到720p,下載到普通內(nèi)存并使用libx264進行編碼:
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi ... -i interlaced_input.mp4 -vf 'deinterlace_vaapi,scale_vaapi=w=1280:h=720,hwdownload,format=nv12' -c:v libx264 ... progressive_output.mp41
4.編碼
編碼器僅接受輸入作為VAAPI表面。如果輸入在普通存儲器中,則需要在將幀提供給編碼器之前上載 - 在ffmpeg實用程序中,可以使用hwupload過濾器。它將上傳到與軟件框架布局相同的表面,因此可能需要在之前添加格式過濾器以使輸入格式正確(硬件通常需要nv12布局,但大多數(shù)軟件功能使用yuv420p)布局)。所述hwupload濾波器還需要一個設(shè)備上傳到,需要創(chuàng)建過濾器圖形之前被定義。
因此,要為某些輸入使用默認解碼器,然后將幀上傳到VAAPI并使用H.264和默認設(shè)置進行編碼:
ffmpeg -vaapi_device /dev/dri/renderD128 -i input.mp4 -vf 'format=nv12,hwupload' -c:v h264_vaapi output.mp41
如果已知輸入是硬件可解碼的,那么我們可以使用hwaccel:
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128 -i input.mp4 -c:v h264_vaapi output.mp41
最后,當輸入可能是或不是硬件可解碼時,我們可以這樣做:
ffmpeg -init_hw_device vaapi=foo:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device foo -i input.mp4 -filter_hw_device foo -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi output.mp41
這是因為解碼器將輸出vaapi表面(如果hwaccel可用)或軟件幀(如果不可用)。在第一種情況下,它匹配vaapi格式,而hwupload什么都不做(它通過硬件幀不變)。在第二種情況下,它匹配nv12格式并將輸入轉(zhuǎn)換為該格式,然后上載。但是,根據(jù)選擇的路徑,性能可能會有很大的變化。
支持的編碼器是:
編碼 | API |
---|---|
H.262 / MPEG-2第2部分 | mpeg2_vaapi |
H.264 / MPEG-4第10部分(AVC) | h264_vaapi |
H.265 / MPEG-H第2部分(HEVC) | hevc_vaapi |
MJPEG / JPEG | mjpeg_vaapi |
VP8 | vp8_vaapi |
VP9 | vp9_vaapi |
對于編解碼器選項的說明,請參見< http://www.ffmpeg.org/ffmpeg-codecs.html#VAAPI-encoders >。
5.從libx264映射選項
目前不支持類似CRF的模式。唯一的恒定質(zhì)量模式是CQP(恒定量化參數(shù)),其對場景內(nèi)容沒有適應(yīng)性。但是,它允許不同幀類型的不同質(zhì)量設(shè)置,通過在未引用的B幀上花費更少的比特來改善壓縮 - 參見(i | b)_q(因子|偏移)選項。CQP模式不能與最大比特率或緩沖區(qū)大小組合。
支持CBR和VBR模式,但它們的輸出因驅(qū)動器和設(shè)備而異(默認為VBR,設(shè)置-maxrate等于-b:v用于CBR)。HRD緩沖選項(rc_max_rate,rc_buffer_size)是有效的,并且編碼器將在適當時生成buffering_period和pic_timing SEI。
沒有完全類似的-preset選項。該-compression_level選項控制在編碼器本地速度/質(zhì)量權(quán)衡(即,努力花費在試圖從當?shù)剡x擇喜歡的運動估計和模式選擇最佳效果的量),用一個模糊的每個設(shè)備的規(guī)模。參數(shù)是一個小整數(shù),從1到某個極限取決于設(shè)備(不超過7) - 更高的值更快/更低的流質(zhì)量。另外,某些硬件(Intel gen9)支持具有更多限制功能的低功耗模式。可以通過-low_power選項訪問它。
根本不支持雙通道編碼和前瞻 - 只能進行本地速率控制。VBR模式應(yīng)該在接近總體比特率目標方面做得相當不錯,但如果復(fù)雜性變化,質(zhì)量將在流中發(fā)生顯著變化。
三、硬件/QuickSync
原文(英文):https://trac.ffmpeg.org/wiki/Hardware/QuickSync
警告:請勿在不確定需要的情況下安裝Intel Media SDK,尤其是在Linux上。在許多情況下,你不需要它,嘗試使用它可能會破壞其他東西。
“Intel Quick Sync Video”是許多英特爾GPU內(nèi)部可用的一組硬件功能的營銷名稱。
1.硬件支持
2.API支持
可以通過許多不同的API訪問硬件:
DXVA2 / D3D11VA
這些是標準的Windows API,由英特爾圖形驅(qū)動程序?qū)崿F(xiàn),以支持視頻解碼。libmfx on Linux
這是英特爾的一個庫,可以作為Intel Media SDK的一部分安裝,并支持編碼和解碼案例的子集。libmfx on Windows
這是一個隨英特爾圖形驅(qū)動程序提供的庫,支持所有編碼和解碼案例。Media Foundation
另一個Windows API,通過英特爾圖形驅(qū)動程序支持一些編碼和解碼案例。ffmpeg不支持。VAAPI with i965 driver
這是libva / VAAPI 結(jié)構(gòu)的主要免費驅(qū)動程序。大多數(shù)Linux發(fā)行版打包它。VAAPI with iHD driver
Linux上libmfx的后端使用修改后的libva和VAAPI驅(qū)動程序; 這也可以由用戶直接使用。
3.Linux
您可以從二進制安裝媒體服務(wù)器工作室https://software.intel.com/en-us/intel-media-server-studio/。 但是,Media Server Studio僅支持有限的HW平臺和Linux發(fā)行版。 整個開源媒體堆棧提供了更廣泛的硬件平臺和支持的Linux發(fā)行版。
Intel open source media stack
項目名: 支持的Gen Graphics | Open Source Repo |
---|---|
MSDK: gen9 + | https://github.com/Intel-Media-SDK/MediaSDK |
Libva: GEN5 + | https://github.com/intel/libva |
i965驅(qū)動程序: gen5~gen9.5 | https://github.com/intel/intel-vaapi-driver |
iHD驅(qū)動程序: gen9 + | https://github.com/intel/media-driver |
VAAPI VS libmfx
如果可能,強烈建議將VAAPI與i965驅(qū)動程序一起使用。如果您的用例特別需要其特定功能集,則僅使用libmfx。
VAAPI / i965
在大多數(shù)Linux發(fā)行版中標準打包。
運行所有可用的硬件,包括舊的和更便宜的設(shè)備。
更廣泛的編解碼器支持。
適用于可能也使用AMD / Nvidia硬件和Mesa的應(yīng)用程序的通用API。
可與標準API(EGL / OpenGL,OpenCL)互操作。libmfx / iHD
在某些情況下可能會提供更好的編碼質(zhì)量(?)。
在某些情況下可能會提供更高的編碼吞吐量(特別是在Iris圖形上)。
適用于也可在Windows上運行的應(yīng)用程序的通用API。
可與英特爾OpenCL實施互操作。
4.Windows
Windows版本MSDK可以從得到 https://software.intel.com/media-sdk
5.運行
VAAPI
請參閱硬件/ VAAPI:https://trac.ffmpeg.org/wiki/Hardware/VAAPI
libmfx
該庫具有大量可供選擇的選項,可能的有效值取決于版本和硬件。libavcodec嘗試將常見選項明智地映射到libmfx選項,但映射是粗略的并且有漏洞,尤其是圍繞速率控制。
使用無效組合可能會激發(fā)消息:“QSV運行時不支持選定的速率控制模式。請選擇其他模式。” 通常這條消息是準確的,但它也可以指其他問題,如缺乏可用的設(shè)備。
6.在Linux上安裝Media SDK
請注意,內(nèi)核修補程序和修改過的系統(tǒng)庫都是必需的。建議不要將它安裝在任何也用于其他目的的機器上,因為它不使用正常的分配機制,并且可能意外地被其他軟件包破壞/破壞。
建造機器:
建立和安裝打包調(diào)度:< https://github.com/lu-zero/mfx_dispatch >。(也可以按照安裝手冊中的說明從Media SDK安裝中提取必要的文件 - 不建議這樣做,只需使用包。)
使用–enable-libmfx構(gòu)建ffmpeg。目標機器:
確保目標計算機具有受支持的CPU。當前版本僅在昂貴的CPU(“Xeon”/“Core i”品牌)上支持gen8 / gen9圖形。更便宜的CPU(“Pentium”/“Celeron”/“Atom”品牌)上的相同圖形核心被明確禁用,可能是出于商業(yè)原因。
得到一個干凈的版本支持的內(nèi)核版本(目前4.4:< https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz >),并應(yīng)用所提供的補丁。構(gòu)建和安裝。
構(gòu)建并安裝提供的libva和libdrm樹。
運行Media SDK安裝腳本以安裝專有組件。
重啟。
————————————————
版權(quán)聲明:本文為CSDN博主「Tosonw」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Tosonw/article/details/90178195
評論
查看更多