瀏覽器與android移動端視頻互播技術實現

来源:https://www.cnblogs.com/chuzhouGIS/archive/2019/01/19/10291621.html
-Advertisement-
Play Games

手機端與平臺之間的視頻直播功能,主要通過集成多種開源視頻框架以及採購第三方視頻直播伺服器產品來實現預定業務需求。視頻直播對話功能的實現,主要經歷了三個階段:利用開源視頻框架實現視頻直播、採購第三方視頻伺服器實現視頻直播、系統平臺集成開源框架實現視頻互播。 圖1.視頻互播邏輯框架 1 利用開源視頻框架 ...


       手機端與平臺之間的視頻直播功能,主要通過集成多種開源視頻框架以及採購第三方視頻直播伺服器產品來實現預定業務需求。視頻直播對話功能的實現,主要經歷了三個階段:利用開源視頻框架實現視頻直播、採購第三方視頻伺服器實現視頻直播、系統平臺集成開源框架實現視頻互播。

 

圖1.視頻互播邏輯框架

       1 利用開源視頻框架實現視頻直播

       首先,視頻流轉播需要獨立伺服器軟體構建視頻流轉播通道,經過框架調研與分析,我們選擇SRS伺服器軟體作為視頻轉播伺服器軟體,而SRS是基於Linux操作系統的伺服器軟體。通過配置搭建CentOS伺服器虛擬機作為SRS軟體的基礎系統環境,再安裝配置開源SRS流媒體伺服器軟體作為推流和播流的服務軟體,為視頻直播模塊的開發提供基礎的測試環境。流媒體伺服器(SRS)在視頻流播放的過程中,起到建立視頻流通道的作用,每個唯一的URL地址代表一個視頻流通道,推流和拉流都是針對該視頻流通道的操作。流媒體伺服器同時可以擔負起上千條視頻流通道轉發操作。

       其次,手機端視頻直播客戶端採用開源的主流yaesa框架,實現了較好視頻推流效果。依據業務需求把yaesa推流模塊集成封裝,順利合併到原有的Android系統框架中,完成android客戶端的視頻推流功能,將rtmp格式視頻流推送到流媒體伺服器(SRS)的視頻流通道地址。

       再次,系統平臺的視頻畫面播放功能採用video.js播放框架實現,video.js是基於html5的網路視頻播放器,根據指定的視頻流通道地址從流媒體伺服器自動拉取rtmp格式視頻流,並播放實時的視頻畫面。Web頁面中嵌入多個video控制項對象,從多個視頻流通道讀取視頻流,實現了多視頻直播畫面視窗效果。

       2 採購第三方視頻伺服器實現視頻直播

       為了保障視頻流轉發過程的穩定性,從硬體廠商採購了第三方視頻伺服器TFMS,包含硬體設備和流媒體伺服器軟體兩個部分,替換開源流媒體伺服器軟體SRS產品,其發揮的視頻流轉發作用與SRS是一樣。

       對於系統功能實現來說,無需新增開發工作量,只需要修改視頻流通道地址url即可實現流媒體伺服器的切換。

       3 系統平臺集成開源框架實現視頻互播

       上述第一階段實現了視頻流從手機端到瀏覽器端的單向傳播。根據業務需求的深入,需要再實現視頻流從瀏覽器端到手機端的單向傳播,構建兩條雙向視頻流通道,從而達到視頻播放互動對話的效果。

       技術實現上,需要兩個方面的技術準備。瀏覽器集成插件從攝像頭和麥克風獲取視頻流和聲音,並推流到指定的視頻流通道url;手機端集成拉流框架,從指定視頻流通道url拉取視頻流和聲音,並播流到播放視窗控制項中。

       系統平臺的推流插件方面,通過市場產品調研和比較,選擇了NodeMediaClient Web推流框架,該框架基於flash實現了連接PC的Camera和microphone硬體設備埠,直接獲取Camera視頻流和microphone聲音,並以rtmp格式把視頻流推送到流媒體伺服器的指定視頻流通道url。

       手機端採用vitamio播流框架,從指定的視頻流通道url拉取視頻流,併在手機端彈出視頻播放的浮動視窗,該視窗中實時播放拉取的rtmp格式視頻流播放,從而完成從瀏覽器端到手機端的視頻流的推流和拉流過程。

參考文獻

1 https://github.com/ossrs/srs;

2 https://github.com/illuspas/NodeMediaClient-Web;

3 https://www.cnblogs.com/xiaoniuzai/p/7129036.html;

4 https://www.cnblogs.com/endv/p/7487685.html;

5 http://www.jq22.com/jquery-info404;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • oracle提供了for迴圈語句,讓我們可以遍歷select搜索的結果。用法也很簡單,代碼如下: for迴圈語句還可以傳入參數: ...
  • [TOC] 1. RecyclerView 1.1. Add support library 1.2. 將RecyclerView添加到佈局 此文件命名為: 1.3. 主actiivty中如何調用recycleview對象 2. 實例 本節中的所有代碼已上傳到: ...
  • ...
  • 起因: 最近做的APP中有一個新功能:已知用戶微信號,可點擊直接跳轉到當前用戶微信聊天視窗頁面。 當時第一想法是使用無障礙來做,並且覺得應該不難,只是邏輯有點複雜。沒想到最終踩了好多坑,特地把踩過的坑記錄下來。 實現邏輯: 在APP中點擊按鈕→跳轉到微信界面→模擬點擊微信搜索按鈕→在微信搜索頁面輸入 ...
  • [TOC] 1. Intent啟動器 1.1. Intent的用途 1. 啟動Activity :希望返回結果 2. 啟動服務 啟動一個不適用用戶界面而在後臺執行操作的組件 :下載文件等,可攜帶任何必要的數據 : 使用客戶端 伺服器介面,從其他組件綁定到此服務 3. 傳遞廣播 廣播是任何應用均可接收 ...
  • [TOC] 1.載入器特征 用於每個 和 支持非同步載入數據。 監控其數據源併在內容變化時傳遞新結果。 2. Loader API 3. 在應用中使用Loader 主要步驟 1. 或 2. 的實例 3. 一個 ,用於載入由 支持的數據。您也可以實現自己的 或 子類,從其他源中載入數據。 4. 一個 實 ...
  • [TOC] 1. Fragment是什麼 fragment表示 Activity 中的行為或用戶界面部分。可以將多個片段組合在一個 Activity 中來構建多窗格 UI fragment是activity的模塊化組成部分 fragemnt性質: 有自己的生命周期 可以接收輸入事件,並且可以在act ...
  • 功能描述:彈出鍵盤,右邊有最大化按鈕,沒有最大化的時候最大行數為3,預設1行,隨著文字輸入增加自動增加高度,到達3行時不會在增加,點擊最大化輸入框,行數無限制,輸入框下方圖片點擊刪除 此處為了簡便,鍵盤監聽用了一個庫,如果自己寫也簡單,直接 addOnGlobalLayoutListener 便可 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...