阿里視頻直播解決方案VS(MediaMTX + WebRTC) 流媒體解決方案

背景:

????????公司采購了新的攝像頭,通過rtsp或者rtmp推流到云平臺,云平臺內部進行轉碼處理,客戶端使用HLS或HTTP-FLV播放,移動App可能使用HLS或私有SDK,超低延時則采用WebRTC。

技術選型:

RTSP:傳統監控行業標準,NVR 和本地播放首選,但外網穿透困難。

RTMP:直播推流的常用協議,穿透性好,CDN 支持佳,但實時性略遜。

HTTP-FLV:Web 播放友好,穿透性好,延遲低,適合 Web 端直播。

HLS:Web 和移動端播放的首選,穿透性好,自適應碼率,但延遲高。

WebRTC:超低延遲,適合實時互動場景,但實現復雜且服務器開銷可能大。

注意:WebRTC在當前2025年5月得到的消息小程序源生不支持需依賴平臺sdk,而且移動端也需要適配WebView

本文提供兩種實現方案

方案一:使用阿里的視頻直播服務(需要有域名)

第一步:創建推流域名和播流域名

第二步:把提供的CNAME配置到域名解析中

第三步:創建直播地址

第四步:推流

這是阿里的官方文檔模擬推流如何通過不同設備實現標準和超低延時直播推流_視頻直播(LIVE)-阿里云幫助中心

作者采用OBS Studio實現推流

本文以Windows端OBS v27.2.3版本為例介紹使用OBS推流,其他平臺及版本操作類似。

  1. 下載并安裝OBS推流工具。下載地址,請參見OBS Studio。

  2. 運行OBS推流工具。

  3. 在菜單欄中選擇文件?>?設置

  4. 在設置頁面選擇推流,配置信息如下所示:

    001

    參數

    描述

    服務

    選擇自定義

    服務器

    輸入已經生成的鑒權推流地址,例如:rtmp://demo.aliyundoc.com/app/stream?auth_key=1543302081-0-0-9c6e7c8190c10bdfb3c0************

    串流密鑰

    串流密鑰為空。

  5. 在OBS主界面來源區域添加推流源,然后單擊開始推流

    002

  6. 進入流管理,在在線流中查看并管理已推的音視頻流

第五步:直播(作者采用h5網頁直播,把代碼中flvUrl換成自己的M3U8 格式播流地址中就好了就好了)

<!DOCTYPE html>
<html>
<head><title>FLV直播播放器</title><style>#flv-player {width: 800px;max-width: 100%;background: #000;}</style>
</head>
<body><video id="flv-player" controls muted playsinline></video><!-- 引入flv.js庫 --><script src="https://cdn.jsdelivr.net/npm/flv.js@1.6.2/dist/flv.min.js"></script><script>const videoElement = document.getElementById('flv-player');const flvUrl = 'http://demo.aliyundoc.com/live_ali/live_ali123.flv?auth_key=1753323502-0-0-3508789f6f105175f2ff16dd4ccf102a'; // 替換為實際FLV流地址// 1. 檢測瀏覽器支持性if (flvjs.isSupported()) {const flvPlayer = flvjs.createPlayer({type: 'flv',          // 必須指定為flvisLive: true,         // 直播模式hasAudio: false,      // 根據實際流啟用hasVideo: true,url: flvUrl,enableStashBuffer: false // 禁用緩沖以降低延遲}, {enableWorker: true,   // 啟用Web WorkerlazyLoadMaxDuration: 3 * 60, // 內存優化seekType: 'range'     // 支持Range請求});// 2. 綁定視頻元素flvPlayer.attachMediaElement(videoElement);// 3. 加載并播放flvPlayer.load();videoElement.play().catch(e => {console.error('自動播放失敗:', e);// 顯示播放按鈕讓用戶手動觸發});// 4. 錯誤處理flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {console.error('播放錯誤:', errType, errDetail);if (errType === flvjs.ErrorTypes.NETWORK_ERROR) {// 網絡錯誤嘗試重連setTimeout(() => flvPlayer.unload().load(), 3000);}});} else {fallbackToHLS(); // 降級方案}// 5. 資源釋放window.addEventListener('beforeunload', () => {flvPlayer?.destroy();});</script>
</body>
</html>

方案二:自己實現rtsp推流轉碼WebRTC

架構圖:

本文只介紹其中一條鏈路

rtsp推流WebRTC播放(鏈路是ffmpeg->MediaMTX-WebRTC)

代碼在這通過網盤分享的文件:video-transcoding.zip
鏈接: https://pan.baidu.com/s/1CzuYn-5hmrnQCA6Q_W5kmQ 提取碼: irqe

這是一個java項目,簡化的流媒體解決方案,使用MediaMTX作為流媒體服務器,支持RTSP推流和WebRTC播放,集成JWT認證系統。

根據項目README操作就行了

需要注意博主默認tcp傳輸所以推流的時候如果提示461 Unsupported Transport

請換成ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 -c:v libx264 -preset ultrafast -tune zerolatency -rtsp_transport tcp -f rtsp rtsp://admin:admin123@localhost:8554/live

如有其他問題歡迎和私信作者一起討論

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

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

相關文章

day33:零基礎學嵌入式之網絡——TCP并發服務器

一、服務器1.服務器分類單循環服務器&#xff1a;只能處理一個客戶端任務的服務器并發服務器&#xff1a;可同時處理多個客戶端任務的服務器二、TCP并發服務器的構建1.如何構建&#xff1f;&#xff08;1&#xff09;多進程&#xff08;每一次創建都非常耗時耗空間&#xff0c;…

VR全景制作的流程?VR全景制作可以用在哪些領域?

VR全景制作的流程&#xff1f;VR全景制作可以用在哪些領域&#xff1f;VR全景制作&#xff1a;流程、應用與未來虛擬現實&#xff08;VR&#xff09;全景制作正迅速改變我們的感官體驗&#xff0c;使我們能夠身臨其境地探索虛擬世界&#xff0c;享受沉浸式的奇妙感受。那么&…

用LangChain重構客服系統:騰訊云向量數據庫+GPT-4o實戰

人們眼中的天才之所以卓越非凡&#xff0c;并非天資超人一等而是付出了持續不斷的努力。1萬小時的錘煉是任何人從平凡變成超凡的必要條件。———— 馬爾科姆格拉德威爾 目錄 一、傳統客服系統痛點與重構價值 1.1 傳統方案瓶頸分析 1.2 新方案技術突破點 二、系統架構設計&…

主要分布在腹側海馬體(vHPC)CA1區域(vCA1)的混合調諧細胞(mixed-tuning cells)對NLP中的深層語義分析的積極影響和啟示

腹側海馬體CA1區&#xff08;vCA1&#xff09;的混合調諧細胞&#xff08;mixed-tuning cells&#xff09;通過整合情感、社會關系、空間概念等多模態信息&#xff0c;形成動態的情景化語義表征&#xff0c;為自然語言處理&#xff08;NLP&#xff09;的深層語義分析提供了重要…

ESP32的ADF詳解:6. Audio Processing的API

一、Downmix 1. 核心功能 將基礎音頻流和新加入音頻流混合為單一輸出流&#xff0c;支持動態增益控制和狀態轉換。輸出聲道數與基礎音頻一致&#xff0c;新加入音頻自動轉換聲道匹配。2. 關鍵特性聲道處理 輸出聲道數 基礎音頻聲道數新加入音頻自動轉換聲道&#xff08;如立體…

Qt(基本組件和基本窗口類)

一、基本組件1. Designer設計師為什么要上來先將這個東西呢&#xff0c;這個是QT外置的設計界面的工具&#xff0c;沒啥用&#xff0c;所以了解一下。我們用的多的是QT內置的界面設計&#xff0c;只需要我們雙擊我們創建的項目的.ui文件就可以進入這個界面&#xff0c;你對界面…

docker與k8s的容器數據卷

Docker容器數據卷 特性 docker鏡像由多個只讀層疊加而成&#xff0c;啟動容器時&#xff0c;Docker會加載只讀鏡像層并在鏡像棧頂部添加一個讀寫層。如果運行中的容器修改了現有的一個已經存在的文件&#xff0c;那么該文件將會從讀寫層下面的只讀層復制到讀寫層&#xff0c;該…

自然語言處理技術應用領域深度解析:從理論到實踐的全面探索

1. 引言:自然語言處理的技術革命與應用前景 自然語言處理(Natural Language Processing,NLP)作為人工智能領域的核心分支,正在以前所未有的速度改變著我們的數字化生活。從最初的規則基礎系統到如今基于深度學習的大語言模型,NLP技術經歷了從理論探索到實際應用的深刻變…

OpenGLRender開發記錄(二): 陰影(shadowMap,PCF,PCSS)

目錄已實現功能陰影shadowMapPCFPCSS實現shadowMapPCFPCSS陰影GitHub主頁&#xff1a;https://github.com/sdpyy1 OpenGLRender:https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 已實現功能 除了上次實現IBL之外&#xff0c;項目目前新增了imGUI的渲染&#xff0c;更方便…

Linux:日志亂碼

1、Linux日志亂碼可能是XShell客戶端編碼沒設置為UTF-8引起的&#xff0c;按照以下步驟&#xff0c;設置終端格式&#xff1a;中文版&#xff1a;打開Xshell會話屬性&#xff08;文件→屬性→終端→編碼&#xff09;&#xff0c;選擇與服務器一致的編碼格式&#xff08;如UTF-8…

Rouge:面向摘要自動評估的召回導向型指標——原理、演進與應用全景

“以n-gram重疊量化文本生成質量&#xff0c;為摘要評估提供可計算標尺” Rouge&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09; 是由 南加州大學信息科學研究所&#xff08;ISI&#xff09;的Chin-Yew Lin 于2004年提出的自動文本摘要評估指標&am…

[STM32][HAL]stm32wbxx 超聲波測距模塊實現(HY-SRF05)

前言 在電子技術應用中,距離測量是一個常見且重要的需求。超聲波模塊因其測量精度較高、成本較低、易于使用等優點,被廣泛應用于機器人避障、液位檢測、智能停車系統等領域。該文主要講解以stm32wb芯片為主控,用HAL庫來對HY-SRF05超聲波模塊進行代碼編寫,實現基本的驅動和測…

MySQL 性能調優實戰指南:從診斷到優化全解析

引言在日常的數據庫運維工作中&#xff0c;我們經常需要對 MySQL 數據庫進行診斷和性能分析。本文將介紹一套全面的 MySQL 診斷腳本&#xff0c;適用于 MySQL 8.0&#xff08;兼容 8.0.15 及以上版本&#xff09;&#xff0c;涵蓋事務鎖分析、性能瓶頸定位、配置檢查、連接狀態…

8. 狀態模式

目錄一、應用背景二、狀態模式2.1 解決的問題2.2 角色2.3 實現步驟三、通用設計類圖四、實現4.1 設計類圖4.2 狀態轉換圖4.3 代碼實現一、應用背景 某對象發生變化時&#xff0c;其所能做的操作也隨之變化。應用程序的可維護性和重用性差代碼的邏輯較復雜 二、狀態模式 2.1 …

php語法--foreach和in_array的使用

文章目錄foreach基礎語法&#xff1a;案例1&#xff1a;引用傳遞模式&#xff1a;嵌套數組處理&#xff1a;避免在循環中計算數組長度&#xff1a;使用引用減少內存拷貝&#xff1a;打印數組in_array基礎使用嚴格使用foreach 基礎語法&#xff1a; foreach ($iterable as $va…

ES6模塊詳解:核心語法與最佳實踐

以下是 EMAScript 6&#xff08;ES6&#xff09;模塊規范的核心要點及細節解析&#xff1a; &#x1f4e6; 一、核心語法導出&#xff08;export&#xff09; 命名導出&#xff1a;支持導出多個具名成員。export const a 1; export function b() { /* ... */ } // 或集中導出 …

Python day25

浙大疏錦行 Python day25. 內容&#xff1a; 異常處理&#xff0c;在日常的編碼工作過程中&#xff0c;為了避免由于各種bug導致的異常情況&#xff0c;我們需要引入異常處理機制&#xff0c;它的工作場景是當程序運行出現意外時&#xff0c;可以根據編碼規則處理響應的錯誤。…

mac llama_index agent算術式子計算示例

本文通過簡單數學計算&#xff0c;示例llama_index使用agent解決復雜任務過程。 假設mac本地llama_index環境已安裝&#xff0c;過程參考 mac測試ollama llamaindex-CSDN博客 測試mac筆記本內存8G&#xff0c;所以使用較小LLM完成示例。 ollama pull qwen3:1.7b qwen3:1.7b能…

uni-app小程序云效持續集成

創建項目 必須是 cli 命令行創建的 uni-app 小程序項目參考uni-app官方構建命令&#xff1a; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project生成小程序代碼上傳密鑰 管理-開發設置-小程序代碼上傳生成的文件放在根目錄即可 安裝持續集成插件 pnpm install uni-mi…

uniapp+高德地圖實現打卡簽到、打卡日歷

一、注冊高德地圖。應用管理創建應用&#xff0c;分別添加Andriod平臺、Web服務、Web端、微信小程序四種類型的key。二、考勤規則打卡地點選擇位置代碼&#xff1a;<script setup lang"ts"> import { onMounted, onUnmounted, reactive, ref, watchEffect } fr…