5

node-stream 使用分享

 2 years ago
source link: https://wulu.zone/posts/node-stream
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Nov 10, 2020

node-stream 使用分享

基于Node.js 的本地直播应用

今天介绍一个开源项目node-stream,该项目由开发者waleedahmad开发,采用MIT协议在Github开源。 node-stream 利用Node.js实现了一个简易的本地直播平台。该项目支持从推流软件(OBS等)接收RTMP流并转码为HLS流在浏览器中播放。该项目分为服务端和客户端,服务端负责接收RTMP流和转码,客户端负责显示播放页面,同时该项目支持简单的帐号管理。

本文将讲述 node-stream 的部署和使用。对项目本身构建感兴趣的伙伴可以查看项目开发者 waleedahmad 写的文章 Building Live Streaming App with Node.js and React

原版的node-stream的安装使用

部署node-stream开发环境

以 Ubuntu

  • 安装Node.js开发环境

  • 安装 ffmpeg

    $ sudo apt install ffmpeg
  • 安装 mongodb

    注意!Ubuntu提供的 mongodb 包并非由MongoDB公司维护,并且与官方的 mongodb-org 包有冲突。如果您已经在Ubuntu系统上安装了 mongodb 包,那么在执行这些说明之前,必须先卸载 mongodb 包。否则可能会出现难以预计的问题,导致mongodb无法正常运行。

    各操作系统mongodb官方安装教程:链接

配置和与运行node-stream

  1. 从github上下载 node-stream 源码

    $ git clone https://github.com/waleedahmad/node-stream
  2. 修改配置文件

    $ cd nodeStream && nano ./server/config/default.js

    几个重要配置说明:

    • server.secret 为服务器密钥,用于加密会话,建议修改。

    • server.port 为网页客户端的端口。

    • rtmp_server.trans.ffmepgffmpeg 安装路径。Linux系统下,可以通过 which ffmpeg 获得,默认情况应该是与原始配置相同的,无需更改。Windows系统,则需要手动修改为 ffmepg 实际安装位置。

  3. 安装依赖,运行node-stream

    $ npm install
    $ npm run start

    {% codeblock node-stream/ %} $ npm install $ npm run start {% endcodeblock %}

  4. 访问网页端注册账户并获取串流密钥

    访问http:127.0.0.1:3333 注册帐号:login.webp

    注册完成后,进入 Go Live 页面,点击 Generate a new key 生成串流密钥。复制生成的串流密钥。

    generateKey.webp
  5. 利用 OBS 直播串流

    打开OBS > 设置 > 推流。服务器选项选择 自定义 ,服务器输入 rtmp://127.0.0.1:1935/live串流密钥为上一步骤生成的密钥。

    obsSetting.webp
  6. 接下就能在客户端首页看到直播列表,点击即可查看。

    streamList.webp
    play.webp

部署到树莓派上

要将 node-stream 部署到树莓派上,只要在树莓派上安装arm版本的nodejs,再同样按照上面的步骤就可以啦。但是,由于原版的 node-stream 只支持在localhost访问,所以局域网内的其他设备访问就会出现问题。所以笔者fork后针对原版进行了修改,修改的版本:emuqi/node-stream,只要直接在配置文件里将ip_addr配置为树莓派在局域网的ip再运行直播服务就可以在局域网内访问node-stream了。其他更加详细的修改可以看下文。

针对node-stream进行改进

在使用原版的 node-stream 的过程在,发现其存在一些问题。

  1. 不支持自定义ip,只能在localhost运行。
  2. 虽然 node-stream/server/config/default.js 也就是配置文件中提供了很多参数,但是修改部分配置后会出现很多问题。比如修改直播服务的端口后,直播列表的预览图就会加载失败等。

因此,笔者在原版的基础上做了一些改动和修复,感兴趣的朋友可以使用笔者修改过后的版本emuqi/node-stream。使用方法与原版基本相同,主要修改如下:

  • 添加直播服务自定义ip功能

    可在配置中直接修改ip_addr,即可自定义ip。

  const config = {
      server: {
          ip_addr: '127.0.0.1',
          secret: 'kjVkuti2xAyF3JGCzSZTk0YWM5JhI9mgQW4rytXc',
          port : 3333
      },
      ...
  }
  • 修复更改直播服务端口会导致直播缩略图无法正常显示的Bug

  • 更新项目readme

Some rights reserved

Except where otherwise noted, content on this page is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK