zoukankan      html  css  js  c++  java
  • EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍

    EasyDSS流媒体解决方案是一套集流媒体点播、转码、管理、直播、录像、检索、时移回看于一体的一套完整的商用流媒体解决方案。EasyDSS软件以压缩包的形式提供给客户使用,同时支持Linux和 Windows两个平台。其中Linux平台打成tar包, Windows平台打成zip包。通过 Node.JS 运行打包脚本, 实现了打包过程的自动化。

    本篇博文将从EasyDSS版本打包方式展开说明

    1、打包核心库 archiver

    用到一个打包的核心库 archiverjs, 这个 archiver 库, 支持 glob 表达式, 可以非常方便的指定 需要打包哪些文件和目录排除哪些文件和目录. 关于 arhiver 对 glob 的支持, 可以点击这里查看. archiver 功能强大到可以指定工作目录 cwd, 给压缩包指定前缀目录 prefix.

    2、 字节大小格式化输出

    pretty-bytes 一个将字节大小格式化成 human-readable 的库. 方便在压缩过程中显示进度信息.

    3、 commander 命令行工具

    commander 结合 tj 创作的这个命令行工具, 快速生成一个打包的命令, 并将打包的格式做成命令行选项.

    以下是执行 node release.js -h 输出

     Usage: release [options] [command]
    
    
     Options:
    
    -V, --version           output the version number
    -F, --format [tar,zip]  archive format [tar]
    -h, --help              output usage information
    
    
     Commands:
    
    clean
    

    4、 完整的打包脚本

    const archiver = require('archiver');
    const prettyBytes = require('pretty-bytes');
    const os = require('os');
    const path = require('path');
    const fs = require('fs');
    const program = require('commander');
    
    var dir = path.basename(__dirname);
    
    function doArchive() {
        switch (program.format) {
            case 'zip':
                var output = fs.createWriteStream(`${__dirname}/${dir}.zip`);
                var archive = archiver('tar', { zlib: { level: 9 } })
                break;
            case 'tar':
                var output = fs.createWriteStream(`${__dirname}/${dir}.tar.gz`);
                var archive = archiver('tar', { gzip: true });
                break;
            default:
                console.log('unknow format');
                program.help();
                break;
        }
        output.on('close', function () {
            console.log(os.EOL + prettyBytes(archive.pointer()) + ' total bytes');
        });
        archive.on('warning', function (err) {
            if (err.code === 'ENOENT') {
                console.log(err);
            } else {
                throw err;
            }
        }).on('error', function (err) {
            throw err;
        }).on('progress', data => {
            process.stdout.clearLine();
            process.stdout.cursorTo(0);
            process.stdout.write(`${prettyBytes(data.fs.processedBytes)} / ${prettyBytes(data.fs.totalBytes)}`);
        })
    
        archive.pipe(output);
        archive.glob(`**`, {
            cwd: path.resolve(__dirname, "dist"),
            dot: true,
             ignore: ['logs/**/*', 'temp/**/*']
        },{
            prefix: dir
        })
        console.log(`do ${program.format} ...`);
        archive.finalize();
    }
    
    program.version(require('./package.json').version)
        .option('-F, --format [tar,zip]', 'archive format [tar]', 'tar')
    
    program.command('clean').action(function () {
        if(fs.existsSync(path.resolve(__dirname, `${dir}.zip`))){
            fs.unlinkSync(path.resolve(__dirname, `${dir}.zip`));
        }
        if(fs.existsSync(path.resolve(__dirname, `${dir}.tar.gz`))){
            fs.unlinkSync(path.resolve(__dirname, `${dir}.tar.gz`));
        }
        console.log('clean done.');
        process.exit();
    }) 
    
    program.command('*', '', {
        noHelp: true
    }).action(function () {
        program.help();
    })
    
    program.parse(process.argv);
    
    doArchive();
    

    适用场景

    1、现场直播

    摄像机或其它设备实时采集到的现场画面,通过编码器或编码软件推送到直播服务器分发,用户即可通过PC、手机、平板电脑等多种终端实时观看现场直播内容。常用于年会、发布会、政企会议等的网络直播。

    EasyDSS
    2、网络电视

    实现传统电视台的网络播出,支持多平台多终端的直播观看及时移回看。

    EasyDSS

    3、远程监控

    配合网络摄像头可实现远程视频监控,终端用户可以通过PC、手机、平板电脑等多种终端实时观看远程画面,并可以把监控画面录制下来随时回看或分享。广泛应用于宝宝在线、家居安全、公共安防等方向。

    EasyDSS

    4、实时课堂

    应用于远程课堂直播,让不在现场的人也能实时学习优质课程。支持时移,可以随时回看任意时间的课程。
    EasyDSS

    5、科研方向

    应用于农业、养殖业、科学实验等跨区域场景研究。

    EasyDSS

    关于EasyDSS

    EasyDSS流媒体解决方案采用业界优秀的流媒体框架模式设计,服务运行轻量、高效、稳定、可靠、易维护,支持RTMP直播、RTMP推送、HTTP点播、HTTP-FLV直播、HLS直播,并支持关键帧缓冲,画面秒开等多种特性,能够接入Web、Android、iOS、H5、微信等全平台客户端,是移动互联网时代贴近企业点播/直播需求的一款接地气的流媒体服务器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等网络播放器,可以形成一套完整的视频直播、录播解决方案,满足用户在各种行业场景的流媒体业务需求。

    EasyDSS

  • 相关阅读:
    好记性不如烂笔头-linux学习笔记2kickstart自动化安装和cacti
    好记性不如烂笔头-linux学习笔记1
    关于TP5中的依赖注入和容器和facade
    vbs 脚本2
    vbs脚本
    Memcache 和 Radis 比较
    MongoDB 索引的使用, 管理 和优化
    mysql大数据高并发处理
    sql处理高并发
    LB 负载均衡的层次结构
  • 原文地址:https://www.cnblogs.com/babosa/p/11123962.html
Copyright © 2011-2022 走看看