2024年 C++音視頻開發學習路線(ffmpeg/rtsp/srs/webrtc/hls)

在音視頻工作領域,很多人可能會陷入徘徊和迷茫的境地。音視頻的知識紛繁復雜,自己學習非常困難,既需要非常扎實的基礎知識,又需要有很多的工程經驗;不知道如何學,怎樣才能查漏補缺自己的技術短板。

對于音視頻工作領域,我總結了九個前景不不錯的方向:直播、傳輸、算法、視頻播放器、流媒體后端、短視頻、音頻播放、視頻編輯、圖像處理。具體的方向如下:

音視頻自學的難點

  • 音視頻自學非常困難,網上通俗易懂的難找到
  • 網上部分資源是對應的開源版本較低,比如雷霄驊(雷神)博客的FFmpeg版本較低
  • 音視頻涉及大量的開源庫和協議
  • 比如ffmpeg的編譯,如果不熟悉各種編譯報錯
  • Janus編譯涉及各種開源組件編譯不通過
  • 比如WebRTC涉及的RTP RTCP SDP STUN等協議
  • 部分嵌入式音視頻的朋友技術面窄,技術不深入
  • 比如有同學做了2年的音視頻驅動,一幀音頻能持續播放多久都不明白

2024全新,音視頻流媒體高級開發學習路線

一、音視頻基礎

1.1、音頻基礎知識

  • 聲音的采集原理及模數轉換
  • 高品質音頻采樣率必須大于等于44.1KHz的原因
  • 什么是PCM(脈沖編碼調制)
  • 用多少位來表示一個采樣點
  • 采樣值是用整數還是浮點數來表示
  • 音量大小與采樣值的關系
  • 每個音頻幀包含多少個采樣點
  • 左右通道的采樣數據如何排列
  • 音頻編碼原理

1.2、視頻基礎知識

  • RGB彩色原理
  • YUV格式的必要性
  • 什么是像素
  • 分辨率、幀率、碼率的概念
  • 不同的YUV數據存儲格式的區別
  • YUV內存對齊問題
  • 為什么會出現綠屏畫面
  • H264編碼原理
  • H264中I、P和B幀的關系(IPB幀)

1.3、解復用基礎知識

  • 解復用的概念,例如MP4格式
  • 不同復用格式的必要性
  • 常見的復用格式:MP4、FLV、TS

1.4、FFmpeg開發環境搭建

  • 在Windows、Ubuntu和MAC三大平臺下搭建開發環境
  • QT的安裝
  • FFmpeg命令行環境的配置
  • FFmpeg API環境的配置
  • FFmpeg的編譯方法
  • 在Windows平臺下安裝vs2019

1.5、音視頻開發常用工具

  • 使用Medialnfo分析視頻文件
  • 使用mp4box分析MP4文件
  • 使用VLC播放器進行測試播放
  • 使用audacity分析音頻PCM數據
  • 使用EasyICE分析TS流
  • 使用Elecard_ streamEye分析H264視頻
  • 使用flvAnalyser分析FLV文件
  • 使用海康YUVPlayer分析YUV數據

二、FFmpeg實戰教程

2.1、FFmpeg命令

  1. 提取音頻PCM/AAC文件
  2. 提取視頻YUV/H264文件
  3. 解復用和復用
  4. 音視頻錄制
  5. 視頻裁剪和合并
  6. 圖片/視頻轉換
  7. 直播推流和拉流
  8. 水印/畫中畫/九宮格濾鏡 目的:快速掌握FFmpeg的功能,加深對音視頻的理解。

2.2、SDL跨平臺

  1. 多媒體開發庫實戰
  2. SDL環境搭建
  3. SDL事件處理
  4. SDL線程處理
  5. 視頻YUV畫面渲染
  6. 音頻PCM聲音輸出 SDL兼容Win、Ubuntu、Mac等平臺,用于項目的畫面顯示和聲音輸出。

2.3、FFmpeg基石精講

  1. FFmpeg框架
  2. FFmpeg內存引用計數模型
  3. 解復用相關AVFormat
  4. 編解碼相關AVCodec
  5. 壓縮數據AVPacket
  6. 未壓縮數據AVFrame
  7. FFmpeg面向對象思想
  8. Packet/Frame數據零拷貝 目的:熟悉FFmpeg常用結構體和函數接口。

2.4、FFmpeg過濾器

  1. FFmpeg過濾鏈框架
  2. 音頻過濾器框架
  3. 視頻過濾器框架
  4. 多路音頻混音amix
  5. 視頻水印watermark
  6. 視頻區域裁剪和翻轉
  7. 視頻添加logo

2.5、FFmpeg音視頻解復用+解碼

  1. 解復用流程
  2. 音頻解碼流程
  3. 視頻解碼流程
  4. FLV封裝格式分析
  5. MP4封裝格式分析
  6. FLV和MP4 seek的區別
  7. FLV格式用于直播的原因
  8. MP4不能用于直播的原因
  9. MP4用于點播的可能性
  10. AAC ADTS分析
  11. H264 NALU分析
  12. AVIO內存輸入模式
  13. 音頻重采樣實戰
  14. 重采樣后的數據播放時長一致性
  15. 重采樣后PTS的表示方式
  16. 視頻解碼后YUV內存對齊問題
  17. 音頻解碼后PCM排列格式問題
  18. 硬件解碼dxva2/nvdec/cuvid/qSV
  19. 硬件GPU數據轉移到CPU
  20. H265解碼 目的:學習FFmpeg API,掌握音視頻解復用、解碼和復用合成視頻。

2.6、ffplay播放器

  1. ffplay.c的意義
  2. ffplay框架分析
  3. 解復用線程
  4. 音頻解碼線程
  5. 視頻解碼線程
  6. 聲音輸出回調
  7. 畫面渲染時間間隔
  8. 音頻重采樣
  9. 畫面尺寸格式變換
  10. 音頻、視頻、外部時鐘同步的區別
  11. 以視頻為基準時音頻重采樣補償
  12. 音量靜音、調節大小的本質
  13. 音視頻packet隊列大小限制
  14. 音視頻packet隊列的線程安全性
  15. 音視頻frame隊列大小限制
  16. 音視頻frame隊列的線程安全性
  17. 暫停、播放實現機制
  18. seek播放導致的畫面卡住問題
  19. seek播放數據隊列、同步時鐘處理
  20. 逐幀播放實現方法
  21. 播放器退出的流程要點 目的:掌握ffplay.c源碼,對自己開發播放器有事半功倍的效果。

2.7、FFmpeg音視頻編碼+復用合成視頻

  1. AAC音頻編碼
  2. H264視頻編碼
  3. PCM+YUV復用合成MP4/FLV
  4. H264編碼原理
  5. IDR幀和幀的區別
  6. 動態修改編碼碼率
  7. GOP間隔參考值
  8. 復用合成MP4音視頻不同步問題
  9. 編碼、復用timebase問題
  10. MP4合成IOS不能播放問題
  11. 重采樣后PTS的表示方式
  12. 視頻編碼YUV內存對齊問題
  13. 硬件編碼dxva2/nvenc/cuvid/qsv
  14. H265編碼原理
  15. H264、H265編碼互轉

2.8、ffmpeg多媒體

  1. 視頻處理工具
  2. ffmpeg.c的意義
  3. ffmpeg框架分析
  4. 音視頻編碼
  5. 封裝格式轉換
  6. 提取音頻
  7. 提取視頻
  8. logo疊加
  9. 音視頻文件拼接
  10. filter機制
  11. 命令行解析流程
  12. MP4轉FLV不重新編碼邏輯
  13. MP4轉FLV重新編碼邏輯
  14. MP4轉FLV scale

注: ffmpeg.c是ffmpeg命令的源碼,掌握ffmpeg.c的大體框架對于我們要實現一些不知道怎么編寫代碼的功能(用ffmepg命令行可以但不知道怎么調用ffmpeg api時可以參考ffmepg.c的邏輯)有極大的幫助,比如要裁剪視頻長度。

2.9、FFmpeg+ QT播放器

  1. 常見開源播放器分析
  2. CUVID/D3D11VA硬解
  3. 界面和播放核心分離框架分析
  4. 音量頻譜展示
  5. 播放器模塊劃分
  6. 音頻均衡器
  7. 解復用模塊
  8. 畫面旋轉、翻轉
  9. 音視頻解碼
  10. 畫面亮度、飽和度調節
  11. 播放器控制
  12. 畫面4:3 16:9切換
  13. 音視頻同步
  14. 碼流信息分析

3、流媒體客戶端

3.1、RTMP推拉流項目實戰

  1. RTMP協議分析
  2. 使用wireshark進行抓包分析
  3. H264 RTMP封裝
  4. AAC RTMP封裝
  5. RTMP拉流實戰
  6. H264 RTMP解析
  7. AAC RTMP解析
  8. RTMP推流實戰
  9. 判斷無MetaData時是否能播放
  10. RTMP推流是否會導致延遲
  11. 如何動態調整RTMP推流的碼率
  12. 如何動態調整RTMP推流的幀率
  13. RTMP拉流是否會導致延遲
  14. 如何檢測RTMP拉流的延遲
  15. 如何解決RTMP播放的延遲問題
  16. ffplay和vlc是否適合用來測試播放延遲
  17. RTMP拉流播放變速策略設置

3.2、RTSP流媒體實戰

  1. RTSP協議分析
  2. RTP協議分析
  3. H264 RTP封裝
  4. H264 RTP解析
  5. AAC RTP封裝
  6. AAC RTP解析
  7. RTCP協議分析
  8. RTSP流媒體服務器搭建
  9. RTSP推流實戰
  10. RTSP拉流實戰
  11. 使用wireshark進行抓包分析
  12. RTP頭部序號的作用
  13. RTCP的NTP和RTP的TS的區別
  14. RTSP交互過程
  15. 花屏可能的原因
  16. 如何發送SPS和PPS
  17. SDP封裝音視頻信息

3.3、HLS拉流分析

  1. HLS協議分析
  2. HLS拉流實戰
  3. HTTP協議分析
  4. FFmpeg HLS源碼分析
  5. TS格式分析
  6. HLS多碼率機制
  7. m3u8文件解析
  8. 如何解決HLS高延遲問題
  9. 使用wireshark進行抓包分析 注:理解HLS的拉流機制有助于解決HLS播放延遲過高的問題。

4、流媒體服務器

4.1、SRS源碼剖析協程

  1. 整體框架分析
  2. 連接和協程的關系
  3. RTMP推流分析
  4. 如何更快速掌握SRS源碼
  5. RTMP拉流分析
  6. 流媒體服務器是否導致延遲
  7. HLS拉流分析
  8. 如何降低流媒體服務器的延遲
  9. HTTP-FLV拉流分析
  10. 怎么獲取流媒體服務器推流信息
  11. FFmpeg轉碼分析
  12. 怎么獲取流媒體服務器拉流信息
  13. 首屏秒開技術分析
  14. 首屏秒開能降低延遲嗎
  15. forward集群源碼分析
  16. 推流->服務器轉發->拉流延遲分析
  17. edge集群源碼分析
  18. 負載均衡部署方式

注:對于SRS流媒體服務器,長期更新,從3.0->4.0->5.0

4.2、ZLMediaKit源碼剖析

  1. 整體框架分析
  2. 數據轉發模型
  3. 線程模塊劃分
  4. SDP解析
  5. RTSP推流連接處理
  6. RTP H264解析
  7. RTSP拉流連接處理
  8. RTP AAC解析

注: ZLMediaKit主要講解RTSP流媒體服務器相關的模塊,其他模塊RTMP/HLS等參考SRS。

5、WebRTC項目實戰

5.1、WebRTC中級開發實踐指南

  1. 理解WebRTC通話原理
  2. 搭建WebRTC開發環境
  3. 最佳coturn服務器搭建方法
  4. 音視頻數據采集技巧
  5. 一對一通話時序分析
  6. 信令服務器設計技巧
  7. SDP分析方法
  8. Candidate類型分析
  9. Web端一對一通話
  10. Web和Android通話
  11. 快速演示AppRTC
  12. 設置編碼器優先級技巧
  13. 最大碼率限制方法
  14. 了解信令服務器的本質
  15. Web和Android的SDP差異
  16. 如何確定通話目標存在性
  17. 新增C++和IOS客戶端兩個版本

注:建議從Web端入手學習WebRTC,可以直接調用JavaScript接口,先對WebRTC通話流程有清晰的理解,然后再考慮其他端的開發。

5.2、WebRTC高級開發-SRS 4.0/5.0源碼分析

  1. RTMP轉發至WebRTC的邏輯分析
  2. WebRTC轉發至RTMP的邏輯分析
  3. WebRTC音視頻一對一通話
  4. WebRTC多人通話
  5. WebRTC SFU模型分析
  6. SRTP協議分析
  7. RTCP協議分析
  8. SDP分析方法
  9. NACK協議分析
  10. turn服務器分析
  11. stun服務器分析
  12. 擁塞控制算法
  13. FEC技術
  14. 抖動緩沖區

5.3、WebRTC高級開發-MESH模型多人通話

  1. 自定義攝像頭分辨率
  2. 碼率限制技巧
  3. 調整編碼器順序
  4. MESH模型多方通話分析
  5. 多人通話信令服務器開發
  6. 動態分配stun/turn服務器
  7. Web客戶端源碼分析
  8. Android客戶端源碼分析

5.4、WebRTC高級開發-Janus SFU模型多人通話

  1. Janus框架分析
  2. Janus信令設計
  3. 基于Janus實現會議系統
  4. Janus Web客戶端源碼分析
  5. Janus Android客戶端源碼分析
  6. Janus Windows客戶端源碼分析
  7. 基于Full ICE的部署
  8. 基于Lite ICE的部署
  9. Full ICE和Lite ICE的區別
  10. 發布訂閱模型技術解析

6、Android NDK

6.1、Android NDK開發基礎

  1. So庫適配總結
  2. GDB調試技巧
  3. Makefile_ I程組織
  4. CMake工程組織
  5. 生成指定CPU平臺的so庫
  6. JNI基礎和接口生成
  7. JNI Native層構建Java對象
  8. JNI異常處理

6.2、Android FFmpeg編譯和應用

  1. 編譯x264
  2. 編譯x265
  3. 編譯mp3
  4. 編譯fdk-aac
  5. 編譯FFmpeg
  6. 使用ffmpeg實現mp4轉格式
  7. 使用FFmpeg開發播放器

6.3、Android RTMP推拉流

  1. RTMP推流協議實現
  2. RTMP拉流協議實現
  3. RTMP拉流音視頻同步
  4. MediaCodec硬件編碼
  5. MediaCodec硬件解碼
  6. OpenSL ES播放音頻數據
  7. MediaCodec硬件解碼
  8. OpenGL ES Shader顯示視頻

6.4、Android Ijkplayer源碼分析

  1. 編譯ijlplayer和實踐
  2. 項目框架分析
  3. 播放狀態轉換
  4. 拉流分析
  5. 解碼分析
  6. 音頻播放流程
  7. 視頻渲染流程
  8. OpenSL ES播放音頻數據
  9. MediaCodec硬件解碼
  10. OpenGL ES Shader顯示視
  11. 變速播放實現原理
  12. 低延遲播放實現
  13. 緩存隊列設計機制分析

7、iOS音視頻開發

7.1、iOS FFmpeg 6.0編譯和應用

  • Xcode調試FFmpeg
  • iOS調用FFmpeg
  • QT調試FFmpeg

7.2、iOS FFmpeg RTMP推拉流

  • AVFoundation視頻采集
  • Metal視頻渲染
  • Audio Unit音頻采集
  • Audio Unit音頻播放
  • FFmpeg推流
  • FFmpeg拉流
  • 直播延遲和解決方法

7.3、VideoToolbox硬件編解碼

  • VideoToolbox框架的流程
  • 硬件編解碼步驟
  • CVPixelBuffer解析
  • 如何獲取SPS/PPS信息
  • 判斷是否關鍵幀
  • 編碼參數優化

7.4、iOS jkplayer編譯和應用

  • 本地視頻播放
  • RTMP拉流播放
  • HTTP點播
  • 音頻播放流程
  • 視頻渲染流程

7.5、iOS ijkplayer編譯和應用

  • 基于Mesh一對一通話
  • 基于SFU多人通話

8、音視頻項目實戰

  1. FFmpeg
  2. QMPlay2
  3. ijkplayer
  4. 0OBS
  5. AppRTC
  6. WebRTC
  7. Janus
  8. SRS
  9. ZLMediaKit

9、相關的開源網站與地址如下:

FFmpeg

https://ffmpeg.org/

WebRTC

https://webrtc.org.cn/

RTC社區

https://rtcdeveloper.agora.io/

RFC協議

https://www.rfc-editor.org/rfc/

OpenGL

https://learnopengl-cn.github.io/

GPUImage

https://github.com/BradLarson/GPUImage

VideoLan

https://www.videolan.org/projects/

AOMedia

https://aomedia.org/

http://xiph.org

https://gitlab.xiph.org/

VP9

https://www.encoding.com/vp9/

soundtouch

http://soundtouch.surina.net/

sox

http://sox.sourceforge.net/

10、以上音視頻開發學習路線涵蓋最主流的音視頻全棧開發技術,適合各類技術人員)

  1. 從事音視頻崗位開發,但沒有時間系統學習的在職工程師
  2. 從事嵌入式方向開發,想轉入音視頻開發的在職工程師
  3. 從事Qt/MFC等桌面開發的,薪資多年漲幅不大的在職工程師
  4. 從事Android/IOS移動開發,想往音視頻方向發展的在職工程師
  5. 從事C/C+ +后臺開發,想往流媒體服務器方向發展的在職工程師
  6. 自己研究學習速度較慢,不能系統構建音視頻知識體系的開發人員
  7. 計算機相關專業想進入大廠的在校生(本科及以上學歷,有c/C+ +基礎)

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

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

相關文章

QT C++ widget layout 嵌套 例子2

在上篇文章中描述了實中套虛(用setLayout),虛中套實(用addWidget)。 本文再加1條,虛中套虛(用addLayout)。 所謂虛中套虛,是layout 套 layout 。 另外用循環代碼生成從…

記錄接口請求偶發504 Gateway Time-out問題

項目場景: 我們將服務部署到A公司服務器中,使用了共五臺服務器,分別是:1.NG服務器 2.日志服務器 3.緩存服務器 4.應用服務器1 5.應用服務器2 。而請求過來首先到達的是他們的物理代理服務器,然后再轉發請求到我們的ng…

【Neo4jJDK開箱即用的安裝全流程】

neo4j:命令行本地訪問loclhost neo4j:命令行本地訪問loclhost2 neo4j操作 Neo4j桌面版數據庫導出導入 Neo4j安裝與配置以及JDK安裝與配置教程(超詳細) Neo4j 安裝、使用教程 Neo4j安裝教程 Neo4J桌面版的配置和連接Pycharm jdk-neo對應版本 JDK ORACLE中…

數據結構(四)————二叉樹和堆(中)

制作不易,三連支持一下唄!!! 文章目錄 前言一、堆的概念及結構二、堆的實現三.堆的應用 總結 前言 CSDN 這篇博客介紹了二叉樹中的基本概念和存儲結構,接下來我們將運用這些結構來實現二叉樹 一、堆的概念及結構 1…

招聘公司要求跳槽時間間隔不能太短,我的簡歷不符合要求,怎么辦?

很多招聘公司要求就很奇葩,什么三五原則,什么二一原則,意思就是,你幾年內,不能在超過幾家公司內任職。你就說多奇葩啊,他們都不能保證自己的員工在自己公司干多久,甚至裁掉剛干了半年的員工,也是他們干出來的事,然后他們還好意思有這種奇葩要求。 目錄 1 虛假的雙向選…

OpenPCDet算法的網絡結構及工作原理

OpenPCDet是一個用于三維點云目標檢測的開源算法庫。它提供了完整的目標檢測流程,包括數據預處理、網絡模型、損失函數、后處理等。OpenPCDet基于PyTorch框架實現,并針對點云數據進行了深度優化,以實現高效的目標檢測和定位。 OpenPCDet的目…

SpringMVC 注解詳解

SpringMVC 注解詳解 1. 引言 SpringMVC 是 Spring 框架中的 Web 層解決方案,它通過注解的方式來簡化 MVC 模式的實現。本篇將詳細介紹 SpringMVC 中常用的注解及其用法。 2. SpringMVC 注解分類 SpringMVC 的注解主要分為以下幾類: 2.1 核心注解 C…

用sunoAI寫粵語歌的方法,博主已經親自實踐可行

粵語歌還是很好聽的,那么如何使用suno進行粵語歌的創作呢? 本文和大家進行分享下如何進行粵語歌曲的創作。 訪問地址如下(電腦端/手機端一個地址): ?https://suno3.cn/#/?i8NCBS8_WXTT 在微信瀏覽器中也可以直接…

css 案例 橫向滾動漸變

效果 完整代碼&#xff1a; <template><view class"content"><view class"tab"><view class"tab-item" v-for"(item,index) in tab" :key"index" click"handlerTab(index)":class"ind…

winserver系統設置圖片查看器

新建 .bat 批處理執行文件&#xff0c;內容如下&#xff1a; echo off&cd&color 0a&cls echo Set Win10 Photo Viewer reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpg" /t REG_SZ /d Photo…

MySQL——利用變量進行查詢操作

新建鏈接&#xff0c;自帶world數據庫&#xff0c;里面自帶city表格。 DQL # MySQL利用變量進行查詢操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多個結果查詢 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; s…

Mysql--期末復習

目錄 一.變量 1.系統變量 global session 2.用戶自定義變量 3.局部變量 二.觸發器 1.pysx函數(銷售)拼音縮寫觸發器 2.goods維護(存儲過程) 3.xkglxt 4.訂單延期 一.變量 1.系統變量 global session 2.用戶自定義變量 1.不用提前聲明&#xff0c;使用時直接 變量…

古月居講師/簽約作者招募計劃

機器人&#xff0c;作為一個集成了多學科技術的復雜系統&#xff0c;其開發過程充滿了挑戰。為了幫助開發者們更好地克服這些挑戰&#xff0c;提升項目的開發效率和質量&#xff0c;古月居特別招募[博客簽約作者/課程講師]。如果您平常熱愛記錄、分享開發者經驗的習慣&#xff…

Emby for Mac(輕松管理多媒體影音庫)1.9.9中文版

Emby for Mac是一款強大的多媒體影音庫管理工具&#xff0c;可以幫助用戶輕松管理和瀏覽自己的影音資源。它可以將用戶的個人視頻、音樂和照片組合在一起&#xff0c;并將其流式傳輸到用戶的設備上。 Emby for Mac 1.9.9中文版下載 Emby for Mac具有易于使用的界面&#xff0c;…

分布式與一致性協議之PBFT算法

在分布式系統中&#xff0c;數據的一致性是一個至關重要的問題。為了保證分布式系統中節點之間的數據一致性&#xff0c;人們提出了許多一致性協議和算法。 其中&#xff0c;PBFT&#xff08;Practical Byzantine Fault Tolerance&#xff0c;實用拜占庭容錯&#xff09;算法是…

content-type之multipart/form-data和application/json比較

multipart/form-data 知識點: 用途: 主要用于文件上傳以及包含非ASCII字符或二進制數據的表單數據提交。它將表單數據分割成多個部分&#xff0c;每個部分前都有一個boundary字符串作為分隔&#xff0c;可以包含文本字段和文件字段。結構: 包含了Content-Disposition頭部&…

機器學習案例:加州房產價格(四)

參考鏈接&#xff1a;https://hands1ml.apachecn.org/2/#_12 數據探索和可視化、發現規律 通過之前的工作&#xff0c;你只是快速查看了數據&#xff0c;對要處理的數據有了整體了解&#xff0c;現在的目標是更深的探索數據。 首先&#xff0c;保證你將測試集放在了一旁&…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時&#xff0c;你可以通過不同的方式發送JSON或表單數據&#xff08;application/x-www-form-urlencoded&#xff09;。同時&#xff0c;處理接口錯誤狀態碼&#xff08;如400&#xff09;和返回null的情況也是很重要的。以下是一些示例代碼&…

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…