1. 程式人生 > 實用技巧 >JavaCV開發詳解之23:hls視訊錄製,m3u8切片錄製和fmp4切片錄製詳解

JavaCV開發詳解之23:hls視訊錄製,m3u8切片錄製和fmp4切片錄製詳解

javacv系列文章:

javacv開發詳解之1:呼叫本機攝像頭視訊
javaCV開發詳解之2:推流器實現,推本地攝像頭視訊到流媒體伺服器以及攝像頭錄製視訊功能實現(基於javaCV-FFMPEG、javaCV-openCV)
javaCV開發詳解之3:收流器實現,錄製流媒體伺服器的rtsp/rtmp視訊檔案(基於javaCV-FFMPEG)
javaCV開發詳解之4:轉流器實現(也可作為本地收流器、推流器,新增新增圖片及文字水印,視訊影象幀儲存),實現rtsp/rtmp/本地檔案轉發到rtmp流媒體伺服器(基於javaCV-FFMPEG)
javaCV開發詳解之5:錄製音訊(錄製麥克風)到本地檔案/流媒體伺服器(基於javax.sound、javaCV-FFMPEG)


javaCV開發詳解之6:本地音訊(話筒裝置)和視訊(攝像頭)抓取、混合並推送(錄製)到伺服器(本地)
javaCV開發詳解之7:讓音訊轉換更加簡單,實現通用音訊編碼格式轉換、重取樣等音訊引數的轉換功能(以pcm16le編碼的wav轉mp3為例)
javaCV開發詳解之8:轉封裝在rtsp轉rtmp流中的應用(無須轉碼,更低的資源消耗,更好的效能,更低延遲)
javaCV開發詳解之9:基於gdigrab的windows螢幕畫面抓取/採集(基於javacv的螢幕截圖、錄屏功能)
javaCV開發詳解補充篇:基於avfoundation的蘋果Mac和ios獲取螢幕畫面及錄屏/截圖以及攝像頭畫面和音訊取樣獲取實現

java原生實現螢幕裝置遍歷和螢幕採集(捕獲)功能
javaCV開發詳解之10:基於dshow呼叫windows攝像頭視訊和音訊,想要獲取螢幕畫面首選gdigrab
javaCV開發詳解之11:視訊檔案轉gif動態圖片實現,也支援攝像機、桌面螢幕、流媒體等視訊源轉gif
javaCV開發詳解之GIF動態圖片錄製補充篇:windows桌面螢幕畫面錄製成gif動態圖片,支援桌面任意取域生成gif,可擴充套件支援MacOS/安卓/linux等平臺,可擴充套件支援apng動態圖片
javaCV開發詳解之12:視訊轉apng動態圖片實現,支援透明通道,支援攝像機、桌面螢幕、流媒體等視訊源轉apng動態圖
javaCV開發詳解之13:使用FFmpeg Filter過濾器處理音視訊

javaCV開發詳解之14:音訊重取樣
javaCV開發詳解之15:視訊幀畫素格式轉換
javaCV開發詳解之16:使用一張圖片推流和一張圖片錄製成視訊檔案
javaCV開發詳解之17:GIF和APNG動態圖片推流和錄製成視訊檔案(以gif轉mp4為例)
javaCV開發詳解之18:音視訊轉碼(音訊編解碼和視訊編解碼)
JavaCV開發詳解之19:如何開啟GPU硬體加速,使用JavaCV進行音視訊的硬解碼和硬編碼
JavaCV開發詳解之20:如何使用JavaCV製作ico圖示,圖片和視訊生成ico圖示,視訊流錄製ico圖示
JavaCV開發詳解之21:如何使用JavaCV接入gb28181的ps流並推流到流媒體服務和接入海康大華sdk回撥h264/hevc裸流
JavaCV開發詳解之22:flv,live_flv格式說明,http-flv拉流和http-flv推流及rtmp拉流和rtmp推流全面分析和開發實戰
JavaCV開發詳解之23:hls視訊錄製,m3u8切片錄製和fmp4切片錄製詳解
JavaCV開發詳解之24:使用javacv錄製dash視訊分片,mpeg-dash視訊錄製和製作
JavaCV開發詳解之25:使用javacv儲存raw視訊畫素格式(yuv或者rgb),並使用ffplay播放raw
JavaCV開發詳解之26:使用javacv對視訊進行連續截圖和覆蓋截圖,支援png,jpg,bmp等格式快速連續截圖,適用於視訊快照
JavaCV開發詳解之27:使用javacv把視訊切割成多個視訊分片檔案,以mp4為例,把視訊切割成MP4分片檔案
JavaCV開發詳解之28:如何使用javacv進行多圖推流和多圖合成視訊檔案,以批量jpg圖片推流rtmp和jpg合成flv視訊檔案為例

JavaCV及音視訊相關補充篇:

javacv開發詳解補充篇:解決轉流後視訊畫面快進慢放,時間跳動過大,監控視訊時間戳重新計算pts和dts
音視訊編解碼問題:javaCV如何快速進行音訊預處理和解複用編解碼(基於javaCV-FFMPEG)
音視訊編解碼問題:16/24/32位位音訊byte[]轉換為小端序short[],int[],以byte[]轉short[]為例
實現給圖片增加圖片水印或者文字水印(也支援視訊影象幀新增水印)
流媒體直播實時視訊延遲時間排查和剖析

前言

javaCV開發詳解之3:收流器實現,錄製流媒體伺服器的rtsp/rtmp視訊檔案中我們已經實現了檔案錄製,但是對於hls來說比單檔案錄製要複雜,因為hls涉及ts/fmp4切片,所以本章就單獨講講hls切片,廢話少談,讓我們立刻開始吧。

參考資料

  1. apple官方低延遲解決方案:https://developer.apple.com/documentation/http_live_streaming/enabling_low-latency_hls
  2. hls官方規範:RFC 8216: HTTP Live Streaming Specification
  3. ffmpeg官方文件:https://ffmpeg.org/ffmpeg-formats.html#hls-2

模組依賴(建議使用最新依賴)

  1. 使用maven新增依賴
  <dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.4</version>
  </dependency>
  1. 使用gradle新增依賴
dependencies {
    compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.4'
  }

實現功能

1、錄製m3u8切片
2、自動刪除超過m3u8列表數量的ts切片

完整閱讀本章:https://eguid.blog.csdn.net/article/details/112174881

---end---