91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用node-media-server怎么搭建一個流媒體服務器

發布時間:2021-01-20 14:20:46 來源:億速云 閱讀:1046 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關使用node-media-server怎么搭建一個流媒體服務器,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

安裝

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

npm install node-media-server

編寫并運行node-media-server

新建app.js。并編寫下述代碼,然后運行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的管理端界面。截圖如下:

使用node-media-server怎么搭建一個流媒體服務器

使用FFmpeg命令推送地址。

推送視頻文件

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

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

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

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

推送rtsp流

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

轉hls流格式

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

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: { // 這里參數是trans參數,不是relay參數,relay參數中配置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進行推流,稍等一會,你就會發現在mediaroot指向的目錄下生成一個live/STREAM_NAME的文件夾,里面存放著m3u8文件。由于需要先生成m3u8文件,所以如果是推流攝像頭的話,會存在比較大的延遲。

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

如果發現m3u8播放有問題,把ac和vc兩個參數去掉試試。樓主在實際使用的時候,這兩個參數并沒有使用。

使用代碼對rtsp流轉流

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

代碼如下:

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();

關于使用node-media-server怎么搭建一個流媒體服務器就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万源市| 甘德县| 云安县| 伽师县| 射阳县| 西畴县| 宜兰县| 县级市| 贵南县| 武冈市| 罗源县| 海兴县| 泰宁县| 岑巩县| 吉水县| 图木舒克市| 丹巴县| 顺义区| 平南县| 佳木斯市| 定边县| 宣城市| 玉溪市| 阿勒泰市| 龙井市| 昭通市| 西宁市| 新乐市| 承德县| 高碑店市| 射阳县| 襄汾县| 咸丰县| 南平市| 淮阳县| 青阳县| 遂昌县| 阿拉善右旗| 陆良县| 温州市| 墨玉县|