FPGA實現4K MIPI視頻解碼H265壓縮網絡推流輸出,基于IMX317+VCU架構,支持4K60幀,提供工程源碼和技術支持

目錄

  • 1、前言
    • 工程概述
    • 免責聲明
  • 2、相關方案推薦
    • 我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
    • 我這里已有的 MIPI 編解碼方案
    • 我這里已有的視頻圖像編解碼方案
  • 3、詳細設計方案
    • 設計框圖
    • FPGA開發板
    • IMX317攝像頭
    • MIPI D-PHY
    • MIPI CSI-2 RX Subsystem
    • 圖像預處理
    • Sensor Demosaic 圖像格式轉換
    • Gammer LUT 伽馬校正
    • Video Processing Subsystem 圖像縮放
    • Video Frame Buffer Write 圖像緩存
    • Zynq UltraScale+ VCU H265 視頻壓縮
    • 工程源碼架構
    • PetaLinux 工程編譯
    • VLC播放器
  • 4、Vivado工程源碼詳解
  • 5、工程移植說明
    • vivado版本不一致處理
    • FPGA型號不一致處理
    • 其他注意事項
  • 6、上板調試驗證并演示
    • 準備工作
    • 配置Xshell
    • 配置開發板IP
    • 配置MIPI CSI-2 RX Subsystem
    • 配置Sensor Demosaic
    • 配置Gamma LTU
    • 配置Video Processing Subsystem
    • 配置H265視頻壓縮
    • 配置VLC播放器
    • VLC播放H265碼流視頻演示
  • 7、福利:工程源碼獲取

FPGA實現4K MIPI視頻解碼H265壓縮網絡推流輸出,基于IMX317+VCU架構,支持4K60幀,提供工程源碼和技術支持

1、前言

Xilinx系列FPGA實現MIPI視頻解碼現狀:
MIPI視頻解碼分為D-PHY和CSI-2兩大部分,其中D-PHY屬于物理層,依托硬件,靈活性不高,方案不多;CSI-2屬于協議層,依托代碼,靈活性很高,方案很多;所以只要實現了D-PHY,MIPI-CSI解碼其實就很靈活了;
目前Xilinx系列FPGA實現提供了多種MIPI D-PHY方案;第一種是使用專用的D-PHY芯片實現D-PHY功能,比如MC20901,該方案優點是設計簡單,缺點是硬件成本較高;第二種是使用權電阻網絡實現D-PHY功能,該方案是Xilinx官方推薦的一種簡單、低速的D-PHY方案,通常用于測試,該方案優點是電路簡單,硬件成本低,缺點是性能適中,無法用于高端場景;第三種是使用軟核IP實現D-PHY功能,但該方案僅限于UltraScale+和Zynq UltraScale+高端系列FPGA,該方案優點是設計簡單,缺點是硬件成本極高;然后D-PHY信號進入Xilinx官方的MIPI CSI-2 RX Subsystem IP實現CSI功能,即實現MIPI視頻解碼,另外,也可以使用自己寫的CSI模塊實現CSI功能;本設計使用UltraScale+和Zynq UltraScale+高端系列FPGA,所以無需考慮D-PHY部分;

Xilinx系列FPGA實現H265視頻壓縮現狀:
目前Xilinx系列FPGA實現H265視頻壓縮目前有2種方案,第一種方案是使用自己寫的H265視頻壓縮模塊實現,該方案對開發人員的技術要求及其高,目前99.999%的人都不具備此等水平,H265視頻壓縮模塊配合Xilinx系列FPGA的PetaLinux可實現完美的視頻壓縮,該方案優點是設計靈活,對FPGA型號要求不高,可選擇性更多,硬件成本較低,缺點是實現難度堪稱宇宙級;第二種方案是使用Xilinx官方的VCU IP核,該方案優點是設計簡單,對開發者的技術要求較低,上手快,項目部署快,缺點是對FPGA型號要求很高,目前僅有Zynq UltraScale+MPSoCs的EV系列FPGA支持,可選擇性更少,硬件成本很高;本設計采用Xilinx官方的VCU IP核實現H265視頻壓縮;

工程概述

本設計采用Zynq UltraScale+MPSoCs–XCZU4EV的高端型號FPGA實現4K MIPI視頻解碼H265壓縮網絡推流輸出;視頻輸入源為IMX317 MIPI攝像頭,FPGA首先對攝像頭進行i2c初始化配置,將IMX317 輸出分辨率配置為3840x2160@30Hz,MIPI-4 Lane輸出模式;然后MIPI視頻送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核實現D-PHY+CSI功能;然后調用圖像預處理模塊實現視頻剪裁和RAW12轉RAW8功能;然后視頻送入Xilinx官方的Sensor Demosaic IP核實現RAW8轉RGB888功能;然后視頻送入Xilinx官方的Gamma LTU實現伽馬校正功能;然后送入Xilinx官方的Video Processing Subsystem IP核實現視頻實時縮放;然后調用Xilinx官方的Video Frame Buffer Write IP核將圖像寫入PS側的DDR4中緩存;然后然后調用Xilinx官方的Zynq UltraScale+ VCU IP核讀出圖像并作H265壓縮;至此,整個FPGA工程已經完成;然后編譯工程,導出.xsa文件,并在PetaLinux中做嵌入式Linux啟動文件,在Linux軟件設計中,將壓縮的H265視頻碼流通過TCP協議從網口發送出去,在PC端可通過LVC播放器播放壓縮的H265碼流;然后將做好的Linux啟動文件復制到TF卡中,插上TF卡即可啟動Linux系統,在Xshell中即可操作終端進行配置;

本設計提供資源如下:
? 提供一套XCZU4EV開發板
? 提供一套Vivado2020.2版本的工程源碼
? 提供一套編譯好的固件,可啟動Linux系統

本博客詳細描述了Xilinx系列Zynq UltraScale+MPSoCs–XCZU4EV的高端型號FPGA實現4K MIPI視頻解碼H265壓縮網絡推流輸出的設計方案,工程代碼可綜合編譯上板調試,可直接項目移植,適用于在校學生、研究生項目開發,也適用于在職工程師做學習提升,可應用于醫療、軍工等行業的高速接口或圖像處理領域;
提供完整的、跑通的工程源碼和技術支持;
工程源碼和技術支持的獲取方式放在了文章末尾,請耐心看到最后;

免責聲明

本工程及其源碼即有自己寫的一部分,也有網絡公開渠道獲取的一部分(包括CSDN、Xilinx官網、Altera官網以及其他開源免費獲取渠道等等),若大佬們覺得有所冒犯,請私信批評教育;部分模塊源碼轉載自上述網絡,版權歸原作者所有,如有侵權請聯系我們刪除;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業用途,若由于讀者或粉絲自身原因用于商業用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。

2、相關方案推薦

我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目

其實一直有朋友反饋,說我的博客文章太多了,亂花漸欲迷人,自己看得一頭霧水,不方便快速定位找到自己想要的項目,所以本博文置頂,列出我目前已有的所有項目,并給出總目錄,每個項目的文章鏈接,當然,本博文實時更新。。。以下是博客地址:
點擊直接前往

我這里已有的 MIPI 編解碼方案

我這里目前已有豐富的基于FPGA的MIPI編解碼方案,主要是MIPI解碼的,既有純vhdl實現的MIPI解碼,也有調用Xilinx官方IP實現的MIPI解碼,既有2line的MIPI解碼,也有4line的MIPI解碼,既有4K分辨率的MIPI解碼,也有小到720P分辨率的MIPI解碼,既有基于Xilinx平臺FPGA的MIPI解碼也有基于Altera平臺FPGA的MIPI解碼,還有基于Lattice平臺FPGA的MIPI解碼,后續還將繼續推出更過國產FPGA的MIPI解碼方案,畢竟目前國產化方案才是未來主流,后續也將推出更多MIPI編碼的DSI方案,努力將FPGA的MIPI編解碼方案做成白菜價。。。
基于此,我專門建了一個MIPI編解碼的專欄,并將MIPI編解碼的博客都放到了專欄里整理,對FPGA編解碼MIPI有項目需求或學習興趣的兄弟可以去我的專欄看看,專欄地址如下:
點擊直接前往專欄

我這里已有的視頻圖像編解碼方案

我這里有圖像的JPEG解壓縮、JPEG-LS壓縮、H264編解碼、H265編解碼以及其他方案,后續還會出更多方案,我把他們整合在一個專欄里面,會持續更新,專欄地址:
直接點擊前往

3、詳細設計方案

設計框圖

本設計使用的工程詳細設計方案框圖如下:
在這里插入圖片描述

FPGA開發板

本UP主有下列FPGA開發板均可實現4K@60Hz視頻 HDMI2.0的收發,本博客僅僅是介紹了其中Zynq UltraScale+系列的開發板實現方案,關于本博客使用的這款開發板詳細信息,請參考我之前的博客,對這塊開發板感興趣的朋友可以咨詢本UP獲得;博客鏈接如下:
點擊直接前往

IMX317攝像頭

視頻輸入源為IMX317 MIPI攝像頭,FPGA首先對攝像頭進行i2c初始化配置,將IMX317 輸出分辨率配置為3840x2160@30Hz,MIPI-4 Lane輸出模式;IMX317 i2c配置在vitis軟件代碼中;IMX317攝像頭如下:
在這里插入圖片描述

MIPI D-PHY

由于本設計使用UltraScale+系列FPGA,軟核方案自帶D-PHY,所以不再需要配套的D-PHY芯片或者權電阻D-PHY電路,也就是MIPI輸入電路不再需要分理處LP低功耗電路,直接將HS差分時鐘對和數據對直接連到FPGA的HP-BANK即可;
!!!注意
!!!注意
如果你的開發板FPGA型號不是UltraScale+系列,則需要D-PHY電路,否則無法解碼MIPI視頻;

MIPI CSI-2 RX Subsystem

然后MIPI視頻送入Xilinx官方的MIPI CSI-2 RX Subsystem IP核實現D-PHY+CSI功能,當然,這里主要是CSI功能,即MIPI協議層解碼,IMX317攝像頭配置后,MIPI-CLK是600MHz,又由于是雙沿傳輸,那么線速率就是1200MHz,IMX317配置為4 Lane通道傳輸,雙像素輸出模式;MIPI CSI-2 RX Subsystem配置如下:
在這里插入圖片描述
MIPI CSI-2 RX Subsystem在Block Design中如下:
在這里插入圖片描述

圖像預處理

MIPI視頻解碼后,調用圖像預處理模塊實現視頻剪裁和RAW12轉RAW8功能;將圖像預處理模塊頂層直接拖入Block Design中如下:
在這里插入圖片描述

Sensor Demosaic 圖像格式轉換

調用Xilinx的Sensor Demosaic IP實現RAM轉RGB功能,該IP通過Vitis的C代碼軟件配置,Sensor Demosaic配置如下:
在這里插入圖片描述
Sensor Demosaic在Block Design中如下:
在這里插入圖片描述

Gammer LUT 伽馬校正

調用Xilinx的Gammer LUT IP實現伽馬校正功能,該IP通過Vitis的C代碼軟件配置,Gammer LUT配置如下:
在這里插入圖片描述
Gammer LUT在Block Design中如下:
在這里插入圖片描述

Video Processing Subsystem 圖像縮放

由于工程所用到的IP都是常用IP,所以這里重點介紹一下Video Processing Subsystem;
Video Processing Subsystem有縮放、去隔行、顏色空間轉換等功能,這里僅使用圖像縮放功能;其特點如下:
優點1:適用于Xilinx所有系列的FPGA器件和所有的Vivado版本;
優點2:支持8K最大分辨率:即可以處理高達8K的視頻;
優點3:輸入視頻格式:AXI4-Stream,方便對接Xilinx圖像處理套路的相關IP;
優點4:輸出視頻格式:AXI4-Stream,方便對接Xilinx圖像處理套路的相關IP;
優點5:模塊占用的FPGA邏輯資源更小,相比于自己寫的HLS圖像縮放而言,官方的Video Processing Subsystem資源占用大約減小30%左右,且更高效:
注意!!!!
注意!!!!
缺點1:需要SDK軟件配置,其本質為通過AXI_Lite 做寄存器配置,設計難度現對復雜,對新手小白不太友好;
缺點2:Xilinx官方提供的Video Processing Subsystem IAP并不能實現任意尺寸的圖像縮放,只能在IAP中視頻分辨率查找表范圍內進行縮放操作,如果想要實現自定義任意尺寸縮放,需要修改Xilinx官方提供的API源代碼,對新手小白極其友好,有此類需求的朋友可以聯系博主,提供私人定制服務,也就是我幫你修改Xilinx官方提供的API源代碼,以實現自定義任意尺寸縮放操作;

Video Processing Subsystem邏輯資源如下,請謹慎評估你的FPGA資源情況;
在這里插入圖片描述
Video Processing Subsystem 在Block Design設計中如下:
在這里插入圖片描述

Video Frame Buffer Write 圖像緩存

Video Frame Buffer Write相當于精簡版的VDMA,只具有視頻寫入DDR的功能,與VDMA相比具有YUV視頻寫入的功能,配置如下:
在這里插入圖片描述
Video Frame Buffer Write 在Block Design設計中如下:
在這里插入圖片描述
在Linux設計中可以對視頻寫入的基地址進行配置,通過終端指令配置;

Zynq UltraScale+ VCU H265 視頻壓縮

Zynq UltraScale+ VCU是Xilinx Zynq UltraScale+ ZUEV系列FPGA才有的IP,可以實現最高4K60幀的視頻壓縮和解壓,IP的官方文檔是《PG252》,讀者可以自行前往閱讀,Zynq UltraScale+ VCU配置如下:
在這里插入圖片描述
輸入視頻格式為YUV420,最高分辨率配置為4K60幀;Zynq UltraScale+ VCU 在Block Design設計中如下:
在這里插入圖片描述

工程源碼架構

工程源碼架構包括vivado Block Design邏輯設計和PetaLiux軟件設計;
Block Design邏輯設計架構截圖如下:
在這里插入圖片描述
綜合后的源碼架構如下:
在這里插入圖片描述
需要注意的是,在對Block Design進行Generate Output Products時需要選擇Global模式,如下:
在這里插入圖片描述

PetaLinux 工程編譯

注意!!!
注意!!!
注意!!!
本博主已經提供好已制作完成的啟動文件,理論上PetaLinux 工程編譯不不要您重復再做,如果您感興趣,則可以做這一步。。。

PetaLinux版本:PetaLinux版本為2020.2,因為vivado用的vivado202.2,為了兼容性,建議使用與之配套的PetaLinux2020.2;
運行環境:Ubuntu操作系統,我用的Win10上虛擬機搭建的Ubuntu,當然也可以使用直接裝Ubuntu操作系統的電腦;

第1步:導出vivado工程的.xsa文件,并放到Ubuntu下你新建的文件夾中;同時下載我們提供的BSP包,也放到Ubuntu下你新建的文件夾中;然后改變其用戶權限,如下圖:
? 終端指令:sudo chmod -R 777 文件名,比如:
? 終端指令:sudo chmod -R 777 zu402_mipi_rx_wrapper.xsa
? 終端指令:sudo chmod -R 777 zu402_sd.bsp

第2步:配置PetaLinux2020.2環境變量,如下圖:
? 終端指令:source /opt/pkg/petalinux/2020.2/settings.sh
在這里插入圖片描述
第3步:建立基于BSP包的PetaLinux2020.2工程,如下圖:
? 終端指令:petalinux-create -t project -s zu402_sd.bsp -n zu402_sd
在這里插入圖片描述
第4步:將.xsa硬件信息導入PetaLinux2020.2工程,如下圖:
? 終端指令:petalinux-config --get-hw-description=/home/文件路徑/zu402_sd
在這里插入圖片描述
在編譯環境設置時,建議使用離線編譯,當然,選擇在線編譯也是可以的,離線編譯配置如下:
Yocto Settings → Add pre-mirror url如下,路徑要改為你自己 download 及 ssate 的解壓路徑;
在這里插入圖片描述
Yocto Settings → Local sstate feeds settings如下,路徑要改為你自己 download 及 ssate 的解壓路徑;
在這里插入圖片描述
其他配置保持默認即可,然后保存退出,如下:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
第5步:修改設備樹文件,如下圖:
將我們提供的設備樹文件替換掉PetaLinux工具自動生成的用戶設備樹文件;
? 終端指令:ln -sf zu402_sensor_imx317.dtsi system-user.dtsi
? 終端指令:ls -l
在這里插入圖片描述
第6步:編譯PetaLinux2020.2工程,如下圖:
? 終端指令:petalinux-build
在這里插入圖片描述
如果編譯中途有報錯信息,請復制報錯信息并百度尋找解決辦法,因為每個人的電腦配置不一樣,環境配置不一樣,遇到的問題也不一樣,無法給出統一的答案;

第7步:生成鏡像,如下圖:
? 終端指令:cd images/linux
? 終端指令:petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga
system.bit
在這里插入圖片描述
然后把PetaLinux2020.2工程生成的如下幾個文件連同我們提供好的腳本文件一起放入SD卡中,如下:
在這里插入圖片描述
到此們就可以插入SD卡上電跑系統了;

VLC播放器

壓縮后的H265碼流可通過VLC播放器播放,關于VLC播放器的安裝與使用,請參考下面的博客鏈接:
點擊直接前往

4、Vivado工程源碼詳解

開發板FPGA型號:Xilinx–Zynq UltraScale+MPSoCs–xczu4ev-sfvc784-2-i;
FPGA開發環境:Vivado2020.2;
Linux開發環境:PetaLinux2020.2;
輸入:IMX317攝像頭,分辨率3840x2160@30Hz;
輸出:RJ45網口,H265壓縮碼流,分辨率3840x2160@30Hz;;
視頻壓縮方案:Zynq UltraScale+ VCU–H265壓縮;
視頻壓縮輸出方案:UDP網絡推流;
工程源碼架構請參考前面第3章節中的《工程源碼架構》小節;
工程作用:此工程目的是讓讀者掌握FPGA基于VCU的H265視頻壓縮的設計能力,以便能夠移植和設計自己的項目;
工程的資源消耗和功耗如下:
在這里插入圖片描述

5、工程移植說明

vivado版本不一致處理

1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點擊文件–>另存為;但此方法并不保險,最保險的方法是將你的vivado版本升級到本工程vivado的版本或者更高版本;
在這里插入圖片描述
3:如果你的vivado版本高于本工程vivado版本,解決如下:
在這里插入圖片描述
打開工程后會發現IP都被鎖住了,如下:
在這里插入圖片描述
此時需要升級IP,操作如下:
在這里插入圖片描述
在這里插入圖片描述

FPGA型號不一致處理

如果你的FPGA型號與我的不一致,則需要更改FPGA型號,操作如下:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
更改FPGA型號后還需要升級IP,升級IP的方法前面已經講述了;

其他注意事項

1:由于每個板子的DDR不一定完全一樣,所以MIG IP需要根據你自己的原理圖進行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;

6、上板調試驗證并演示

準備工作

FPGA開發板,推薦使用本博的開發板;
IMX317攝像頭;
帶顯卡的電腦主機,顯卡越貴越好;
網線;
開發板具體連接見資料包里的連接圖:
在這里插入圖片描述
開發板有啟動模式選擇撥碼開關,SD卡啟動方式如下,請將開發板撥到如圖的配置:
在這里插入圖片描述
然后將資料中的如下圖所示壓縮包解壓,并將解壓后的全部文件復制到TF卡中:
在這里插入圖片描述
然后插上TF卡,然后將串口線和網線連接到電腦,安裝串口驅動,資料包中已經提供,上電;

配置Xshell

我們使用Xshell連接開發板模擬Linux終端的操作,Xshell配置如下:
在這里插入圖片描述
在這里插入圖片描述

配置開發板IP

首先需要配置開發板IP,配置為和你的電腦在同一網段即可,因為開發板壓縮的碼流視頻需要發送給電腦;首先查看你的電腦IP,以我的為例如下:
在這里插入圖片描述
然后在Xshell依次輸入如下指令配置配置開發板IP,具體配置要根據你的電腦IP而定,這里只是以我的為例,如果這一步都看不懂建議不要往下看了。。。
? 終端指令:

ifconfig

? 終端指令:

ifconfig ethe 169.254.142.240

如下:
在這里插入圖片描述
然后ping電腦IP,一定要能ping通,不然后面的操作就沒意義了,如下:
? 終端指令:

ping 169.254.142.239

在這里插入圖片描述

配置MIPI CSI-2 RX Subsystem

MIPI CSI-2 RX Subsystem IP核的作用是實現MIPI CSI2-RX解碼,配置MIPI CSI-2 RX Subsystem分辨率為3840x2160,如下:
? 終端指令1:

media-ctl -d /dev/media1 -V "\"a0000000.mipi_csi2_rx_subsystem\":0  [fmt:SBGGR12_1X12/3840x2160 field:none]"

? 終端指令2:

media-ctl -d /dev/media1 -V "\"a0000000.mipi_csi2_rx_subsystem\":1  [fmt:SBGGR12_1X12/3840x2160 field:none]"

在這里插入圖片描述

配置Sensor Demosaic

Sensor Demosaic IP核的作用是實現Bayer轉GRB888,配置Sensor Demosaic分辨率為3840x2160,如下:
? 終端指令1:

media-ctl -d /dev/media1 -V "\"a0020000.v_demosaic\":0  [fmt:SBGGR12_1X12/3840x2160 field:none]"

? 終端指令2:

media-ctl -d /dev/media1 -V "\"a0020000.v_demosaic\":1  [fmt:SBGGR12_1X12/3840x2160 field:none]"

在這里插入圖片描述

配置Gamma LTU

Gamma LTU IP核的作用是實現伽馬校正,配置Gamma LTU分辨率為3840x2160,如下:
? 終端指令1:

media-ctl -d /dev/media1 -V "\"a0040000.v_gamma_lut\":0  [fmt:RBG888_1X24/3840x2160 field:none]"

? 終端指令2:

media-ctl -d /dev/media1 -V "\"a0040000.v_gamma_lut\":1  [fmt:RBG888_1X24/3840x2160 field:none]"

在這里插入圖片描述

配置Video Processing Subsystem

Video Processing Subsystem IP核的作用是實現圖像縮放,配置Video Processing Subsystem分辨率為3840x2160,即不做縮放操作,如下:
? 終端指令1:

media-ctl -d /dev/media1 -V "\"a0010000.v_proc_ss\":0  [fmt:RBG888_1X24/3840x2160 field:none]"

? 終端指令2:

media-ctl -d /dev/media1 -V "\"a0010000.v_proc_ss\":1  [fmt:RBG888_1X24/3840x2160 field:none]"

在這里插入圖片描述

配置H265視頻壓縮

輸入如下指令:
? 終端指令:

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw, format=NV16, width=3840, height=2160, framerate=30/1 !  omxh265enc qp-mode=auto gop-mode=basic gop-length=60 b-frames=0 target-bitrate=60000 num-slices=8 control-rate=constant prefetch-buffer=true low-bandwidth=false filler-data=true cpb-size=1000 initial-delay=500 periodicity-idr=60 ! video/x-h265,profile=main-422, alignment=au ! queue ! mpegtsmux alignment=7 name=mux ! rtpmp2tpay ! udpsink host=169.254.142.239 port=5005

注意!!!
注意!!!
上述指令中的《udpsink host=169.254.142.239 port=5005》
這里的IP是根據我自己的電腦配置的,你的電腦請根據實際情況修改;端口號5005為固定值;
在這里插入圖片描述

配置VLC播放器

開發板網線連接電腦,打開VLC播放器,配置如下:
在這里插入圖片描述
在這里插入圖片描述
這里一定要注意:這里的IP是根據我自己的電腦配置的,你的電腦請根據實際情況修改;
注意!!!
注意!!!
電腦端一定要用有顯卡的電腦,不要用筆記本電腦,不然延時很大,根本無法播放。。。

VLC播放H265碼流視頻演示

VLC播放H265碼流視頻演示如下:

IMX317-H265壓縮

7、福利:工程源碼獲取

福利:工程代碼的獲取
代碼太大,無法郵箱發送,以某度網盤鏈接方式發送,
資料獲取方式:私,或者文章末尾的V名片。
網盤資料如下:
在這里插入圖片描述

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

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

相關文章

Ollama+open-webui搭建私有本地大模型詳細教程

Ollamaopen-webui搭建私有本地大模型詳細教程 1. 什么是 Ollama? 1.1. Ollama 簡介 ? Ollama 是一個輕量級的 AI 模型運行時,專注于簡化 AI 模型的部署和使用。它支持多種預訓練模型(如 Llama、Vicuna、Dolly 等),…

解決Centos7集成IDEA報git版本太低問題

Centos 7 服務器上默認安裝的 Git 是 1.8.3.1 版本的 與最新的IDEA已無法匹配,需要更新 首先,卸載老版本 sudo yum -y remove git sudo yum -y remove git-*添加 End Point 到 CentOS 7 倉庫 sudo yum -y install https://packages.endpointdev.com/r…

Qt常用宏定義判斷大全

Qt 提供了一系列預定義宏用于判斷 Qt 版本、操作系統平臺、編譯器特性等。這些宏在跨平臺開發中非常有用。 1. Qt 版本判斷宏 // 檢查Qt版本 #if QT_VERSION > QT_VERSION_CHECK(5, 15, 0)// Qt 5.15.0及以上版本特有代碼 #endif// 常用版本判斷 #if QT_VERSION > QT_V…

實戰 | 餐廳點餐小程序技術解析:SpringBoot + UniApp 高效開發指南

🖥? 一、系統架構概覽 1.1 技術選型 為了確保開發效率和系統穩定性,我們采用以下技術棧: 模塊技術選型后臺服務SpringBoot MyBatis-Plus MySQL用戶端(點餐小程序)UniApp(Vue 語法)師傅端&…

實現在Unity3D中仿真汽車,而且還能使用ros2控制

文章目錄 前言(Introduction)搭建開發環境(Setup Development Environment)在window中安裝Unity(Install Unity in window)創建Docker容器,并安裝相關軟件(Create Docker containers…

華為配置篇-BGP實驗

BGP 一、簡述二、常用命令總結三、實驗 一、簡述 IBGP 水平分割:從一個 IBGP 對等體學到的路由,不會再通告給其他的 IBGP 對等體。在一個 AS 內部,路由器之間通過 IBGP 交換路由信息。如果沒有水平分割機制,當多個路由器之間形成…

Python視頻標簽工具詳解:基于wxPython和FFmpeg的實現

在當今數字媒體時代,視頻內容的管理和標記變得越來越重要。無論是研究人員需要對實驗視頻進行時間點標記,教育工作者需要對教學視頻添加注釋,還是個人用戶希望對家庭視頻進行分類整理,一個高效的視頻標簽工具都是不可或缺的。本文…

國產三維CAD「皇冠CAD」在汽車零部件領域建模教程:剎車片

本教程深度融合三維皇冠CAD(CrownCAD)的MBD(Model-Based Definition)設計理念,通過參數化建模、智能約束管理、動態裝配驗證等功能,實現數據驅動設計,精準解決了汽車制動系統中精密制動組件的設…

C#從入門到精通(3)

目錄 第九章 窗體 (1)From窗體 (2)MDI窗體 (3)繼承窗體 第十章 控件 (1)控件常用操作 (2)Label控件 (3)Button控件 &…

關于跨域與.NET的處理方案

在 Web 開發里,瀏覽器的同源策略是一項關鍵的安全機制。同源指的是兩個 URL 的協議、域名和端口都相同。當瀏覽器從一個源(域名、協議、端口)的網頁去請求另一個源的資源時,就會產生跨域問題。例如,從 http://www.exam…

react 15-16-17-18各版本的核心區別、底層原理及演進邏輯的深度解析--react18

React 18 是一次重大的版本升級(發布于2022年),引入了并發渲染(Concurrent Rendering) 和一系列新特性,旨在提升應用性能、用戶體驗和開發靈活性。 一、核心新特性 并發模式(Concurrent Mode&a…

基于Spring Boot的平面設計課程在線學習平臺系統的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

Scala-面向對象

Scala 包 基本語法 package 包名 Scala 包的三大作用(和 Java 一樣) 區分相同名字的類 當類很多時,可以很好的管理類 控制訪問范圍 包的命名、說明、對象 包的命名 命名規則 只能包含數字、字母、下劃線、小圓點.,但不能用數字…

Excel 使用技巧:excel 合并不同列內容; excel 將公式轉化為文本

Excel 使用技巧 目錄 Excel 使用技巧excel 合并不同列內容="A:"&C1&"、B:"&D1&"、C:"&E1&"、D:"&F1excel 將公式轉化為文本右鍵選擇行粘貼某一列均填入“提示詞”單擊拖動雙擊某一列均填入“1”清除1…

【數字化轉型,企業應用上云】---持續集成能力重塑企業軟件交付新范式

在數字化轉型浪潮中,軟件交付的速度與質量已成為企業核心競爭力的關鍵。如何高效管理從代碼開發到生產上線的全流程,實現開發與運維的無縫協作?如何通過自動化手段減少人為失誤、加速迭代周期?我們出的研發效能管理平臺&#xff0…

OpenCV圖像形態學:原理、操作與應用詳解

一、引言 圖像形態學(Image Morphology)是圖像處理領域的一個重要分支,它基于集合論、格論、拓撲學和隨機函數理論,主要用于分析和處理圖像的幾何結構。形態學操作通過特定的結構元素(Structuring Element)…

jenkins 參數化發布到服務器 publish over ssh、label、Parameterized publishing

前言 jenkins 參數化發布到服務器 jenkins可匹配標簽通過一個字符串或者正則表達式來匹配jenkins 可通過參數配置發布到服務器,比如打包后,根據參數配置,只發布到某個服務器。 設置選項參數 新增選項參數,比如填入myParameter…

第十二章網絡規劃設計

文章目錄 12-1考點分析12-2綜合布線(歷年高頻考點)12-3網絡設計與分析12-4網絡結構與功能12-5廣域網接入技術12-6網絡故障診斷與排查章節總結 12-1考點分析 12-2綜合布線(歷年高頻考點) 結構化布線系統 網絡規劃和設計是一個迭代和優化的過程。 ■ 結構化綜合布線系統是基于…

Qt基本框架(1)

本篇主要介紹Qt的基本框架,并實現簡單的按鈕事件 本文部分ppt、視頻截圖原鏈接:[萌馬工作室的個人空間-萌馬工作室個人主頁-嗶哩嗶哩視頻] 1. Qt基本框架介紹 Qt基本框架主要分為兩部分:Qt實例對象和Qt窗口。Qt實例對象負責初始化Qt運行時…

數據倉庫項目啟動與管理

數據倉庫項目啟動與管理 確定項目 評估項目就緒情況 項目就緒的三個條件 強力型高級業務管理發起人 對數據倉庫解決方案的影響有先見之明是所在組織內有影響的領導者要求嚴格,但是又比較現實,會為其他成員提供強力支持 強制型業務動機 數據倉庫系統和戰略性業務動機緊密結合…