最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用node-media-server搭建一個簡易的流媒體服務(wù)器

 更新時間:2021年01月20日 11:24:31   作者:小朱小先生  
這篇文章主要介紹了使用node-media-server搭建一個簡易的流媒體服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

記錄一下使用node-media-server的一些過程。本文章環(huán)境為windows。本文章適合初學(xué)者。

使用到的東西:nodeJs、ffmpeg、node-media-server

這里說一點(diǎn)(如果有錯歡迎指出):

node-media-server是作為流媒體服務(wù)器,你可以把他理解為中轉(zhuǎn)站,用于轉(zhuǎn)換流格式或者對視頻流做一些操作以及向外推送流地址。

ffmpeg是作為推流工具,將你需要轉(zhuǎn)換的視頻或者視頻流推流到流媒體服務(wù)器中。

拉流的意思是從流媒體服務(wù)器上拉去視頻流,觀看者通過拉取流媒體服務(wù)器發(fā)布的流地址進(jìn)行觀看。你用視頻播放器播放就是在拉流。

安裝

node-media-server是基于node.Js開發(fā)的,所以需要先使用npm安裝。

npm install node-media-server

編寫并運(yùn)行node-media-server

新建app.js。并編寫下述代碼,然后運(yùn)行app.js

const NodeMediaServer= require('node-media-server');
const config = {
  rtmp: {
    port: 1935,
    chunk_size: 60000,
    gop_cache: true,
    ping: 60,
    ping_timeout: 30
  },
  http: {
    port: 8000,
    allow_origin: '*',
  }
};
 
var nms = new NodeMediaServer(config)
nms.run();

可以訪問localhost:8000/admin地址,訪問node-media-server的管理端界面。截圖如下:

使用FFmpeg命令推送地址。

推送視頻文件

在執(zhí)行下面的代碼的時候,需要將node-media-server啟動起來。

ffmpeg -re -i ./video.mp4 -c copy -f flv rtmp://localhost:1935/live/STREAM_NAME

上述的命令經(jīng)過node-media-server后會產(chǎn)生兩種流地址。一種rtmp。一種flv。前者可以在電腦上播放,后者可以在手機(jī)和電腦上播放。rtmp地址為FFmpeg里的命令地址

flv地址為: http://localhost:8000/live/STREAM_NAME.flv

推送rtsp流

推送rtsp(攝像頭視頻流)只要將上述的./video.mp4該一下就行。博主在測試過程中發(fā)現(xiàn),推送rtsp流要么會出現(xiàn)綠屏要么會出現(xiàn)丟包現(xiàn)象,特別是和hls結(jié)合在一起,丟包率更大,所以不建議使用命令去推送rtsp流。

轉(zhuǎn)hls流格式

轉(zhuǎn)hls流需要注意一點(diǎn),需要指明一下mediaroot參數(shù),雖然node-media-server內(nèi)部有設(shè)置默認(rèn)值,但是還是推薦在設(shè)置一次。然后使用下述配置即可。

const NodeMediaServer= require('node-media-server');
const ff = require('ffmpeg');
const config = {
  rtmp: {
    port: 1935,
    chunk_size: 60000,
    gop_cache: true,
    ping: 60,
    ping_timeout: 30
  },
  http: {
    port: 8979,
    mediaroot: './media/', // 建議寫
    allow_origin: '*',
  },
  trans: { // 這里參數(shù)是trans參數(shù),不是relay參數(shù),relay參數(shù)中配置hls無效
    ffmpeg: './bin/ffmpeg.exe',//指明FFmpeg位置
    tasks: [
      {
        app: 'live',
        ac: 'acc',
        vc: 'libx264',
        hls: true,
        hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]',
        dash: true,
        dashFlags: '[f=dash:window_size=3:extra_window_size=5]'
      }
    ]
  }
};
 
var nms = new NodeMediaServer(config)
nms.run();

啟動上述代碼后,使用FFmpeg進(jìn)行推流,稍等一會,你就會發(fā)現(xiàn)在mediaroot指向的目錄下生成一個live/STREAM_NAME的文件夾,里面存放著m3u8文件。由于需要先生成m3u8文件,所以如果是推流攝像頭的話,會存在比較大的延遲。

m3u8地址為:http://localhost:8000/live/STREAM_NAME/index.m3u8

如果發(fā)現(xiàn)m3u8播放有問題,把a(bǔ)c和vc兩個參數(shù)去掉試試。樓主在實(shí)際使用的時候,這兩個參數(shù)并沒有使用。

使用代碼對rtsp流轉(zhuǎn)流

對于有的使用者有可能需要將rtsp攝像頭視頻流進(jìn)行推流,以便進(jìn)行跨端預(yù)覽,博主這里建議使用這種方法。這種方法無需使用cmd執(zhí)行FFmpeg命令,而且延遲經(jīng)博主測試為3s(內(nèi)網(wǎng),由于沒有外網(wǎng)地址,所以外網(wǎng)不是很清楚)。延遲較小。

代碼如下:

const NodeMediaServer= require('node-media-server');
const config = {
  rtmp: {
    port: 1935,
    chunk_size: 60000,
    gop_cache: true,
    ping: 60,
    ping_timeout: 30
  },
  http: {
    port: 8979,
    mediaroot: './media/',
    allow_origin: '*',
  },
  relay: {
    ffmpeg: './bin/ffmpeg.exe',
    tasks: [
      {
        app: 'live',
        mode: 'static',
        edge: 'rtsp://admin:****@192.168.4.167:554/Streaming/Channels/101',//rtsp
        name: 'technology',
        rtsp_transport : 'tcp', //['udp', 'tcp', 'udp_multicast', 'http']
      }
    ]
  },
};
 
var nms = new NodeMediaServer(config)
nms.run();

這種方法可以產(chǎn)生兩種視頻流,一種rtmp一種flv。

總結(jié)

因?yàn)椴┲鞔罱髅襟w服務(wù)器主要是為了項(xiàng)目中對攝像頭進(jìn)行轉(zhuǎn)流,但是之前JAVA同事有處理過發(fā)現(xiàn)會消耗大量的硬件資源,不過博主使用node-media-server倒是沒有發(fā)現(xiàn)消耗多大的資源,最終還是需要各位具體測試。而且對于攝像頭轉(zhuǎn)流,為了避免不必要的性能消耗,樓主打算僅當(dāng)觀察者發(fā)起預(yù)覽的時候,才讓服務(wù)端啟動流媒體轉(zhuǎn)流功能(使用代碼對rtsp流轉(zhuǎn)流),當(dāng)觀察者關(guān)閉預(yù)覽,就立即把流媒體功能關(guān)閉。這樣能避免性能的不必要消耗。畢竟可以直接通過代碼直接操作,這樣就比較方便,也能降低服務(wù)器的一定壓力。

到此這篇關(guān)于使用node-media-server搭建一個簡易的流媒體服務(wù)器的文章就介紹到這了,更多相關(guān)node-media-server搭建流媒體服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nodejs實(shí)現(xiàn)用戶登錄路由功能

    nodejs實(shí)現(xiàn)用戶登錄路由功能

    這篇文章主要介紹了nodejs中實(shí)現(xiàn)用戶登錄路由功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 一文學(xué)會搭建HTTP服務(wù)器調(diào)用DLL庫

    一文學(xué)會搭建HTTP服務(wù)器調(diào)用DLL庫

    這篇文章主要為大家介紹了一文學(xué)會搭建HTTP服務(wù)器調(diào)用DLL庫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件

    node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件

    這篇文章主要介紹了node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件的示例,幫助大家更好的理解和使用node.js,感興趣的朋友可以了解下
    2021-02-02
  • NodeJs超長字符串問題處理的詳細(xì)分析

    NodeJs超長字符串問題處理的詳細(xì)分析

    這篇文章主要給大家介紹了關(guān)于NodeJs超長字符串問題處理的詳細(xì)分析,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-02-02
  • Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程

    Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程

    這篇文章主要介紹了Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程,本文講解了安裝Redis的Node.js驅(qū)動、編寫測試程序以及npm遠(yuǎn)程服務(wù)器連接十分緩慢的解決方法,需要的朋友可以參考下
    2015-01-01
  • nodejs npm錯誤Error:UNKNOWN:unknown error,mkdir ''D:\Develop\nodejs\node_global''at Error

    nodejs npm錯誤Error:UNKNOWN:unknown error,mkdir ''D:\Develop\n

    今天小編就為大家分享一篇關(guān)于nodejs npm錯誤Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法

    5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法

    這篇文章主要介紹了5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • node.js ws模塊搭建websocket服務(wù)端的方法示例

    node.js ws模塊搭建websocket服務(wù)端的方法示例

    這篇文章主要介紹了node.js ws模塊搭建websocket服務(wù)端的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • nodejs和php實(shí)現(xiàn)圖片訪問實(shí)時處理

    nodejs和php實(shí)現(xiàn)圖片訪問實(shí)時處理

    這篇文章主要為大家詳細(xì)介紹了nodejs和php分別實(shí)現(xiàn)圖片訪問實(shí)時處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • node.js缺少mysql模塊運(yùn)行報錯的解決方法

    node.js缺少mysql模塊運(yùn)行報錯的解決方法

    前幾天在工作中需要利用node.js連接數(shù)據(jù)庫,通過網(wǎng)上的教程連接后運(yùn)行卻報錯了,然后趕緊查找解決的方法,通過測試與朋友的提點(diǎn),終于解決了這個問題,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11

最新評論

普陀区| 叙永县| 天等县| 汾西县| 马尔康县| 祥云县| 页游| 宜兴市| 吕梁市| 泰兴市| 财经| 凉山| 浦城县| 桃园市| 广元市| 敦煌市| 大庆市| 虎林市| 衡南县| 梨树县| 遂昌县| 安顺市| 阜城县| 吴江市| 澳门| 迭部县| 即墨市| 西乌| 天津市| 汨罗市| 綦江县| 南皮县| 溧阳市| 长治市| 汽车| 陇南市| 临泽县| 固原市| 宝鸡市| 文昌市| 濮阳市|