EasyDSS流媒體解決方案是一套集流媒體點播、轉碼、管理、直播、錄像、檢索、時移回看於一體的一套完整的商用流媒體解決方案。EasyDSS軟件以壓縮包的形式提供給客戶使用,同時支持Linux和 Windows兩個平臺。其中Linux平臺打成tar包, Windows平臺打成zip包。經過 Node.JS 運行打包腳本, 實現了打包過程的自動化。html
本篇博文將從EasyDSS版本打包方式展開說明node
一、打包核心庫 archivergit
用到一個打包的核心庫 archiverjs, 這個 archiver 庫, 支持 glob 表達式, 能夠很是方便的指定 須要打包哪些文件和目錄 和 排除哪些文件和目錄. 關於 arhiver 對 glob 的支持, 能夠點擊這裏查看. archiver 功能強大到能夠指定工做目錄 cwd
, 給壓縮包指定前綴目錄 prefix
.github
二、 字節大小格式化輸出web
pretty-bytes 一個將字節大小格式化成 human-readable 的庫. 方便在壓縮過程當中顯示進度信息.json
三、 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
四、 完整的打包腳本網絡
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();
一、現場直播
攝像機或其它設備實時採集到的現場畫面,經過編碼器或編碼軟件推送到直播服務器分發,用戶便可經過PC、手機、平板電腦等多種終端實時觀看現場直播內容。經常使用於年會、發佈會、政企會議等的網絡直播。
二、網絡電視
實現傳統電視臺的網絡播出,支持多平臺多終端的直播觀看及時移回看。
三、遠程監控
配合網絡攝像頭可實現遠程視頻監控,終端用戶能夠經過PC、手機、平板電腦等多種終端實時觀看遠程畫面,並能夠把監控畫面錄製下來隨時回看或分享。普遍應用於寶寶在線、家居安全、公共安防等方向。
四、實時課堂
應用於遠程課堂直播,讓不在現場的人也能實時學習優質課程。支持時移,能夠隨時回看任意時間的課程。
五、科研方向
應用於農業、養殖業、科學實驗等跨區域場景研究。
EasyDSS流媒體解決方案採用業界優秀的流媒體框架模式設計,服務運行輕量、高效、穩定、可靠、易維護,支持RTMP直播、RTMP推送、HTTP點播、HTTP-FLV直播、HLS直播,並支持關鍵幀緩衝,畫面秒開等多種特性,可以接入Web、Android、iOS、H五、微信等全平臺客戶端,是移動互聯網時代貼近企業點播/直播需求的一款接地氣的流媒體服務器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等網絡播放器,能夠造成一套完整的視頻直播、錄播解決方案,知足用戶在各類行業場景的流媒體業務需求。