大疆上云api直播功能如何實現

概述

流媒體服務器作為直播畫面的中轉站,它接收推流端的相機畫面,同時拉流端找它獲取相機的畫面。整個流程如下:

  • 在流媒體服務器上創建流媒體應用(app),一個流媒體服務器上面可以創建多個流媒體應用
  • 約定推拉流的地址。假設流媒體服務器工作在1935端口上面,假設創建的流媒體應用的唯一標識為 live01,那么我們可以約定推拉流地址為 rtmp://ip:1935/live01/{camera_id} ,其中camera_id 為唯一標識,用于區分每一個相機 。針對相機A的推拉流地址可以為:rtmp://ip:1935/live01/camera-A,同理針對相機B的推拉流地址可以為:rtmp://ip:1935/live01/camera-B
  • 推流端向 推拉流地址 推送直播流
  • 拉流端從 推拉流地址 拉取直播流播放

出于技術調研的目的,將使用OBS作為上述流程中的推流端;將使用Nginx作為上述流程中的流媒體服務器;將使用ffplay、VLC、flv.js作為上述流程中的拉流端。那么整個流程的落地實踐就變成了:

在這里插入圖片描述

  • 使用Nginx搭建流媒體服務器,需要基于源碼編譯 nginx-http-flv-module 模塊
  • 在nginx.conf 中創建媒體應用,并做相應的配置,包括對hls(即m3u8)的支持,http-flv的支持
  • 約定推拉流的地址
  • OBS向推拉流地址推送流
  • ffplay拉取直播畫面并播放,rtmp協議
  • VLC拉取直播畫面并播放,rtmp協議、hls協議
  • 使用基于flv.js 的視頻播放器播放直播畫面,http協議

基于源碼編譯安裝nginx-http-flv-module

參考之前寫的:使用Nginx搭建流媒體服務器

創建流媒體應用

當安裝好了 nginx-http-flv-module 之后,就可以創建流媒體應用了。

所謂的創建流媒體應用其實就是編寫 nginx 的配置文件,如果需要創建一個名為live 的流媒體應用,那么可以在nginx.conf 中做如下配置:

# 以下內容放可在 nginx.conf 的最后,rtmp 配置塊為頂級配置塊
rtmp_auto_push on ;rtmp {server {listen 1935; #監聽的端口notify_method get;chunk_size 4000;application live { #rtmp推流請求路徑live on;# 添加 hls 支持hls on;hls_path /usr/local/nginx/html/hls;hls_fragment 3;hls_playlist_length 60;# 允許從任何源push 流allow publish  all ;# 允許從任何地方來播放流allow play all;# 20s內沒有push,就斷開連接drop_idle_publisher 20s ;}}
}
  • listen 1935:指定流媒體服務器的運行端口
  • live :為流媒體應用的應用的名稱,也即流媒體應用的唯一標識
  • live on : 添加直播的支持
  • hls_path:指定生成的m3u8文件的位置

創建http-flv端點和hls端點

創建http-flv端點和hls端點的目的是讓直播流可以在http協議上面傳輸直播畫面。

若不創建,將僅可以使用rtmp協議拉流,即rtmp://ip:1935/live/stream_no;若創建了就可以使用hls或者flvjs來拉流播放了。

創建http-flv端點和hls端點同樣是編輯nginx.conf來實現,如下示例配置:

http {......server {listen  82;server_name  rtmpserver;# 創建hls端點location /hls {add_header 'Access-Control-Allow-Origin' '*' ;add_

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

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

相關文章

ESP-01模塊連接手機熱點問題及解決方法

在使用ESP-01模塊連接手機熱點時,可能會遇到一些問題。本文將詳細介紹如何解決這些問題,并分享最終通過將WiFi切換到2.4GHz成功解決問題的經驗。 一、問題描述 在嘗試使用ESP-01模塊連接手機熱點時,遇到了連接失敗的問題。以下是操作過程中…

NG-ZORRO中tree組件的getCheckedNodeList怎么使用

在 NG-ZORRO(Ant Design for Angular) 的 Tree 組件 中,getCheckedNodeList 方法用于獲取當前選中的節點列表(包括半選狀態節點)。以下是具體用法和示例: 基本用法 首先,確保你已通過 ViewChil…

業務流程先導及流程圖回顧

一、測試流程回顧  1. 備測內容回顧  備測內容: 本次測試涵蓋買家和賣家的多個業務流程,包括下單流程、發貨流程、搜索退貨退款、支付搶購、換貨流程、個人中心優惠券等。 2. 先測業務強調  1)測試業務流程 …

從ChatGPT到AutoGPT——AI Agent的范式遷移

一、AI Agent的范式遷移 1. ChatGPT的局限性與Agent化需求 單輪對話的“工具屬性” vs. 多輪復雜任務的“自主性” ChatGPT 作為強大的生成式AI,雖然能夠進行連貫對話,但本質上仍然是“工具型”AI,依賴用戶提供明確的指令,而無法自主規劃和執行任務。 人類介入成本過高:提…

【Kafka】分布式消息隊列的核心奧秘

文章目錄 一、Kafka 的基石概念?主題(Topic)?分區(Partition)?生產者(Producer)?消費者(Consumer)? 二、Kafka 的架構探秘?Broker 集群?副本機制? 三、Kafka 的卓越特性?高…

【藍橋杯14天沖刺課題單】Day 1

1. 題目鏈接:19937 藝術與籃球 該題目的難點主要在20240413這個日期需要結束程序跳出循環。最開始將該輸出ans的位置放在了for循環之外,此時的日期已經循環完了2024年所有的日期,則最后會統計多而導致結果錯誤。 AC代碼: #incl…

AI人工智能-Jupyter NotbookPycharm:Py開發

安裝 命令: pip install jupyter 啟動 命令: jupyter notebook 啟動成功后,下面網址會默認自動打開當前用戶的根目錄。 其實這個頁面顯示的內容,是我們電腦目錄C:\Users\當前用戶\下的文件夾 我們平常做實驗,希望在…

命懸生死線:當游戲遭遇DDoS圍剿,如何用AI破局?

文章作者:騰訊宙斯盾DDoS防護團隊 一、血色戰場:DDoS攻擊游戲產業的致命瞬間 全球黑色星期五 這是一場波及全球的“黑色星期五”,起初無人察覺,包括小林。 他剛下班到家就迫不及待打開電腦,準備體驗期待已久的《黑神話…

使用HTML5和CSS3實現3D旋轉相冊效果

使用HTML5和CSS3實現3D旋轉相冊效果 這里寫目錄標題 使用HTML5和CSS3實現3D旋轉相冊效果項目介紹技術棧核心功能實現思路1. HTML結構2. CSS樣式解析2.1 基礎樣式設置2.2 3D效果核心樣式2.3 卡片樣式 3. JavaScript交互實現3.1 旋轉控制3.2 自動播放功能 技術要點總結項目亮點總…

【HTML 基礎教程】HTML <head>

HTML <head> 查看在線實例 <title> - 定義了HTML文檔的標題 使用 <title> 標簽定義HTML文檔的標題 <base> - 定義了所有鏈接的URL 使用 <base> 定義頁面中所有鏈接默認的鏈接目標地址。 <meta> - 提供了HTML文檔的meta標記 使用 <me…

macbook電腦如何清理鍵盤防止誤觸

M1芯片的MacBook電腦關機后按任意鍵開機&#xff0c;是蘋果的功能設計。這樣設計的目的是為了方便用戶&#xff0c;讓用戶在想要使用電腦時能快速開機。但是清理電腦鍵盤的時候卻成為了一種苦惱 以下是一些清理 MacBook 鍵盤防止誤觸的方法&#xff1a; 使用工具鎖定鍵盤 Cle…

Rust 面向對象

Rust 面向對象 引言 Rust 是一種系統編程語言,以其高性能、內存安全和并發支持而受到關注。Rust 的面向對象特性是其強大功能之一,它允許開發者以面向對象的方式構建復雜的應用程序。本文將深入探討 Rust 的面向對象編程(OOP)特性,包括類的定義、繼承、封裝和多態等概念…

Redis 源碼硬核解析系列專題 - 第二篇:核心數據結構之SDS(Simple Dynamic String)

1. 引言 Redis沒有直接使用C語言的標準字符串(以\0結尾的字符數組),而是自定義了SDS(Simple Dynamic String)。SDS是Redis的基礎數據結構之一,廣泛用于鍵值存儲、命令參數等場景。本篇將深入剖析SDS的實現原理、優勢以及源碼細節。 2. 為什么不用C標準字符串? C字符串…

python-59-基于python內置庫解析html獲取標簽關鍵信息

文章目錄 1 html.parser1.1 初始化和基礎使用1.1.1 handle_starttag(self, tag, attrs)1.1.2 handle_endtag(self, tag)1.1.3 handle_startendtag(self, tag, attrs)1.1.4 handle_data(self, data)1.1.5 handle_comment(self, data)1.2 解析HTML文檔的流程2 百度搜索關鍵詞鏈接…

Java的string默認值

在Java中&#xff0c;String類型的默認值取決于其定義和實例化的方式。 以下是關于String默認值的詳細說明 未實例化的String變量? 如果定義一個String變量但未對其進行實例化&#xff08;即未使用new關鍵字或直接賦值&#xff09;&#xff0c;其默認值為:ml-search[null]。這…

高并發系統下的訂單號生成服務設計與實現

目錄 引言 訂單號設計的關鍵考量因素 基礎需求分析 唯一性保障 數據量預估 可讀性設計 系統架構考量 分庫分表兼容 可擴展性設計 技術選型與比較 性能優化 高可用性保障 實踐案例&#xff1a;高并發系統訂單號結構設計 結構詳解 業務類型標識(2位) 唯一標識部分…

使用LLaMAFactory微調Qwen大模型

一、環境配置與工具安裝 1. 硬件要求 GPU:至少1塊NVIDIA GPU(推薦RTX 4090/A100/H100,顯存≥16GB)。內存:≥64GB系統內存。存儲:≥100GB硬盤空間用于模型與數據集存儲。2. 軟件依賴 Python 3.8+:需安裝CUDA支持的PyTorch版本(如torch==2.0.1+cu117)。 依賴庫:通過以…

2025-3-29算法打卡

一&#xff0c;回文判定 1.題目描述&#xff1a; 題目描述 給定一個長度為 nn 的字符串 SS。請你判斷字符串 SS 是否回文。 輸入描述 輸入僅 11 行包含一個字符串 SS。 1≤∣S∣≤1061≤∣S∣≤106&#xff0c;保證 SS 只包含大小寫、字母。 輸出描述 若字符串 SS 為回…

Android 接 Twitter Share ,常見問題及解決方案

1. 應用未授權或授權失敗 問題描述:當嘗試分享內容到 Twitter 時,應用提示未授權,或者在授權過程中出現錯誤,無法獲取授權碼或訪問令牌。解決方案 檢查 Twitter API 密鑰和密鑰密碼:確保在 Twitter 開發者平臺創建應用后,獲取的 API 密鑰(Consumer Key)和 API 密鑰密碼…

【數據結構】樹與森林

目錄 樹的存儲方法 雙親表示法 孩子表示法 孩子兄弟表示法 樹、森林與二叉樹的轉換 樹轉換成二叉樹 森林轉換成二叉樹 二叉樹轉換成森林 樹與森林的遍歷 樹的遍歷 森林的遍歷 樹的存儲方法 雙親表示法 這種存儲結構采用一組連續空間來存儲每個結點&#xff0c;同時…