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 输出

  1. Usage: release [options] [command]
  2. Options:
  3. -V, --version output the version number
  4. -F, --format [tar,zip] archive format [tar]
  5. -h, --help output usage information
  6. Commands:
  7. clean

4、 完整的打包脚本

  1. const archiver = require('archiver');
  2. const prettyBytes = require('pretty-bytes');
  3. const os = require('os');
  4. const path = require('path');
  5. const fs = require('fs');
  6. const program = require('commander');
  7. var dir = path.basename(__dirname);
  8. function doArchive() {
  9. switch (program.format) {
  10. case 'zip':
  11. var output = fs.createWriteStream(`${__dirname}/${dir}.zip`);
  12. var archive = archiver('tar', { zlib: { level: 9 } })
  13. break;
  14. case 'tar':
  15. var output = fs.createWriteStream(`${__dirname}/${dir}.tar.gz`);
  16. var archive = archiver('tar', { gzip: true });
  17. break;
  18. default:
  19. console.log('unknow format');
  20. program.help();
  21. break;
  22. }
  23. output.on('close', function () {
  24. console.log(os.EOL + prettyBytes(archive.pointer()) + ' total bytes');
  25. });
  26. archive.on('warning', function (err) {
  27. if (err.code === 'ENOENT') {
  28. console.log(err);
  29. } else {
  30. throw err;
  31. }
  32. }).on('error', function (err) {
  33. throw err;
  34. }).on('progress', data => {
  35. process.stdout.clearLine();
  36. process.stdout.cursorTo(0);
  37. process.stdout.write(`${prettyBytes(data.fs.processedBytes)} / ${prettyBytes(data.fs.totalBytes)}`);
  38. })
  39. archive.pipe(output);
  40. archive.glob(`**`, {
  41. cwd: path.resolve(__dirname, "dist"),
  42. dot: true,
  43. ignore: ['logs/**/*', 'temp/**/*']
  44. },{
  45. prefix: dir
  46. })
  47. console.log(`do ${program.format} ...`);
  48. archive.finalize();
  49. }
  50. program.version(require('./package.json').version)
  51. .option('-F, --format [tar,zip]', 'archive format [tar]', 'tar')
  52. program.command('clean').action(function () {
  53. if(fs.existsSync(path.resolve(__dirname, `${dir}.zip`))){
  54. fs.unlinkSync(path.resolve(__dirname, `${dir}.zip`));
  55. }
  56. if(fs.existsSync(path.resolve(__dirname, `${dir}.tar.gz`))){
  57. fs.unlinkSync(path.resolve(__dirname, `${dir}.tar.gz`));
  58. }
  59. console.log('clean done.');
  60. process.exit();
  61. })
  62. program.command('*', '', {
  63. noHelp: true
  64. }).action(function () {
  65. program.help();
  66. })
  67. program.parse(process.argv);
  68. doArchive();

适用场景

1、现场直播

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



2、网络电视

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

3、远程监控

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

4、实时课堂

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

5、科研方向

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

关于EasyDSS

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

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍的更多相关文章

  1. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器的视频直播录像、检索、回放方案

    需求背景: 近期遇到客户反馈对于直播摄像机录像功能是有一定的需求点的,其实EasyDarwin团队早就研发出对应功能,只是用户对于产品没有足够了解,因此本篇将对录像功能来做一次介绍. 首先,录像就是对 ...

  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同

    背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...

  3. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Nodejs调用bat或sh脚本

    关于EasyDSS流媒体服务器 EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值

    前端方面,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是传统的js来进行开发,而EasyDSS使用的是webpack+vue来进行开发的,了解vue+webpack的 ...

  5. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  6. 推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求

    推荐一个比较好用的流媒体服务开源代码: ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求 https://gitee.com/xiahcu/Z ...

  7. Nginx搭建flv mp4流媒体服务器[转]

    Nginx搭建flv mp4流媒体服务器 作者:二蛋 时间:December 1, 2014 分类:Note 环境:Centos 6.4 32bit 一.安装依赖包 1.安装zlib wget htt ...

  8. (转)CentOS6.5安装Darwin Streaming Server搭建RTSP流媒体服务器

    参考: 1,CentOS6.5安装Darwin Streaming Server搭建RTSP流媒体服务器 http://www.yimiju.com/articles/567.html

  9. EasyDSS高性能RTMP、HLS(m3u8)、FLV、RTSP流媒体服务器运行遇到getpwnam(_xxxxx_)错误的解决办法

    EasyDSS RTMP流媒体服务器是什么? EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS! getpwnam("xxxxx") 近期有EasyDSS流媒 ...

随机推荐

  1. VC检测内存泄漏(Detected memory leaks!)

    Detected memory leaks!Dumping objects ->{98500} normal block at 0x05785AD0, 152 bytes long.Data: ...

  2. 2019牛客暑期多校训练营(第六场) H:Train Driver (最短路+概率)

    题意:给定无向图,Alice在A集合选一个点,Bob在B集合选一个点,CXK在全集里选择一个点. 然后问“三人到某一点集合打篮球的最小距离”的期望. 思路:做过一个裸题,就是给定三人位置,问去哪里集合 ...

  3. Java 多线程学习扩展

    http://www.imooc.com/video/5176 一.如何扩展Java并发知识 Java Memory Mode JMM描述了Java线程如何通过内存进行交互 happens-befor ...

  4. layoutSubviews的缺省实现是使用约束进行布局

    Discussion The default implementation of this method does nothing on iOS 5.1 and earlier. Otherwise, ...

  5. Servlet 容器

    Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器.Servlet容器主要负责管理Servlet.JSP的生命周期以及它们 ...

  6. Numpy | 14 字符串函数

    本章函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作. 它们基于 Python 内置库中的标准字符串函数. 这些函数在字符数组类(n ...

  7. 在Visual Studio中调试时,如何检查有关进程令牌的详细信息?

    从Visual Studio 2005开始,watch窗口获得了一个伪寄存器,用于调查有关进程令牌的详细信息.所以,你只要开始调试,在监视窗口中写下“$user”, 有时查看特权和组的扩展视图会很有趣 ...

  8. Xamarin.Forms应用程序基础知识

    生命周期 在 Android 上,若主活动的 [Activity()] 属性缺少 ConfigurationChanges = ConfigChanges.ScreenSize | ConfigCha ...

  9. 使用mustache 做为docker容器运行动态配置工具

    很多时候我们需要在启动容器的时候基于配置文件运行,如果在配置比较简单的时候我们可以通过环境变量 注入,同时当前12 factors 越来越融入大家的开发中了(对于配置通过环境变量处理),但是好多老的软 ...

  10. GitHub上如何创建文件夹

    看了网上很多关于如何在git上创建空文件夹的文章后,发现大家写的都是用指令在本地创建一个空文件夹后再上传指令和步骤都太繁琐且复杂了,对于用git不是很熟练得到人来说太麻烦了,而且在本地于github上 ...