基於jsmpeg庫下使用ffmpeg創建視頻流連接websocket中繼器傳輸視頻並播放

来源:https://www.cnblogs.com/lpggo/archive/2018/02/02/8404280.html
-Advertisement-
Play Games

這個功能的基本工作是這樣的: 1.使用node運行jsmpeg庫下的websocket-relay.js文件,這個文件的作用是創建一個websocket視頻傳輸中繼器 2.運行ffmpeg,將輸出發送到中繼的HTTP埠,這個http埠是使用node.js搭建的一個簡易的http伺服器 3.將瀏覽 ...


這個功能的基本工作是這樣的:

  1.使用node運行jsmpeg庫下的websocket-relay.js文件,這個文件的作用是創建一個websocket視頻傳輸中繼器

  2.運行ffmpeg,將輸出發送到中繼的HTTP埠,這個http埠是使用node.js搭建的一個簡易的http伺服器

  3.將瀏覽器中的JSMpeg連接到中繼的Websocket埠,瀏覽器中的JSMpeg是node.js環境搭建的時候輸出的一個html文件,文件裡面引用了JSMpeg庫,             並實例化一個新的基於JSMpeg庫下的Player;

  必備工具:

  1)安裝ffmpeg,到http://ffmpeg.org/download.html下載window版本的exe文件,需要在電腦的環境變數中的path設置ffmpeg目錄所在的路徑 

  

  2)安裝Node.js和npm,這個安裝方法就不詳細介紹了

  3)安裝http-server,當然可以使用node.js的express()搭建一個簡單的伺服器,我們將使用它來提供靜態文件(view-stream.html,jsmpeg.min.js),以便我們可以在瀏覽器中使用視頻

  

  4)安裝git並克隆jsmpeg庫(或者直接將它下載為ZIP並解壓)

    sudo apt-get install git
    git clone https://github.com/phoboslab/jsmpeg.git
 

   5)轉到jsmpeg /目錄 cd jsmpeg/ 安裝Node.js Websocket庫: npm install ws

  

   6)在jsmpeg目錄中使用git命令行啟用websocket中繼器,這個中繼器在jsmpeg庫的websocket-delay.js中已經提供了,只需命令node  websocket-delay.js videoPassword streamPort websocketPort 就可以啟動,其中videoPassword就是自己定義的視頻流傳輸的密碼,在後面的ffmpeg創建視頻流過程會用到,streamPort則是視頻流的埠號,websocketPort是websocket中繼器的埠號,需跟jsmpeg庫中的view-stream.html文件創建的Player的埠保持一致

   7)node啟動自己搭建的簡易http伺服器,view-stream.html文件輸出併在瀏覽器中打開對應的地址查看,將參見必備工具3,在瀏覽器中輸入127.0.0.1:1023就可以看到伺服器輸出的view-stream.html文件

  8)在git命令中使用ffmpeg生成推流視頻並輸出視頻到自定義的websocket中繼器提供的命令node  websocket-delay.js videoPassword streamPort websocketPort地址,如:

       ffmpeg -i "video.mp4" -f mpegts -codec:v mpeg1video -s 360x480 -b:v 150k -r 30 -bf 0 -ac 1 -b:a 128k http://127.0.0.1:1024/lpgvideo   video.mp4就是jsmpeg中視頻文件,後面的http://127.0.0.1:1024/lpgvideo就是websocket中繼器中自定義的視頻流傳輸協議host+streamPort+videoPassword,參見6)跟多ffmpeg命令參見中文文檔:https://xdsnet.gitbooks.io/other-doc-cn-ffmpeg/content/index.html,jsmpeg庫的地址=>https://github.com/phoboslab/jsmpeg   end:不出意外的話就可以在瀏覽器中看到ffmpeg推過來的video.mp4視頻文件在播放,當然還有許多諸如實現實時錄屏直播,使用vicam實時錄播等功能,就不一一介紹了!!  

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 寫在前面 ,學好css,需要長期的推敲和積累 ,細節是不斷完善的,逐漸形成自己的風格 讓自己的css更加接近優雅. 下麵來總結一些我覺得比較好的css代碼風格 : 1. 一般網頁中的背景 用背景時 設置為行內樣式 style="background-image: url(img/01.jpg)"; ...
  • 原材料知識點:hover html: css: ...
  • 未完待續...... ECMAScript 6.0(簡稱ES6)是JavaScript語言的下一代標準,已經在2015年6月正式發佈了。它的目標,是使得JavaScript語言可以用來編寫複雜的大型應用程式,成為企業級開發語言。各大瀏覽器的最新版本,隨著時間的推移,支持度已經越來越高了,ES6的大部 ...
  • 周末閑暇,分享一下自己理解的js閉包原理,雖然平時用的少,但是也必須掌握的。 我們做前端的應該都瞭解 Javascript 中的GC機制(垃圾回收機制),如果一個對象不再被引用,那麼這個對象就會被 GC 回收,否則這個對象一直會保存在記憶體中。 我們看下下麵這個簡單的demo,非常簡單,但是能基本說明 ...
  • .net 4.0 ...
  • function roomIds(roomid) { // var str = roomid.replace(/;/g,'\r\n'); if (roomid) { var str = roomid.replace(/;/g, ''); return str; } else { return '暫無... ...
  • 測試jQuery模板 簡單選擇器 元素選擇器 獲取所有 p 元素並設置字體顏色為紅色 ID選擇器 ID在頁面只允許出現一次 將 id 為 xiu 元素設置字體顏色為紅色 class選擇器 class 可以多次出現 獲取所有 class 為 xiu 元素並設置字體顏色為紅色 進價選擇器 群組選擇器 同 ...
  • [1]變數 [2]@apply [3]自定義選擇器 [4]嵌套 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...