利用node.js搭建简易DASH直播系统
来源:互联网 发布:地牢猎手5怎么清除数据 编辑:程序博客网 时间:2024/05/21 21:39
一、直播系统搭建
本文主要利用GPAC推出的MPEG DASH直播切片软件Dashcast、node.js、以及播放器MP4Client进行直播系统的搭建。
- DashCast -vf dshow -vres 640x480 -vfr 30 -v video=”screen-capture-recorder” -live -low-delay -frag 200 -insert-utc -seg-marker eods -min-buffer 0.2 -ast-offset -800 -pixf yuv420p
- node dash.js -segment-marker eods -chunk-media-segments
- MP4Client http://127.0.0.1:8000/output/dashcast.mpd -opt Network:BufferLength=200 -opt DASH:LowLatency=chunk -opt DASH:UseServerUTC=no
二、node.js
- http.createServer:该函数用来创建一个HTTP服务器,并将requestListener作为request时间的监听函数。
http.createServer([requestListener])
接收参数:
requestListener:请求处理函数,自动添加到request事件,函数传递两次参数;
req:请求对象,想知道req有哪些属性,可以查看“http.request属相整合”;
res:响应对象,收到请求后要做出的响应。 - http.response.setHeader:设置头文件信息。如果将要发送的信息已包含头文件,执行该方法后头文件的值将被改写。如果一个头文件需要传递多个值,可以使用数组。
response.setHeader(name, value)
name:响应头的类型,注意这个名字是不区分大小写
value:响应头的值 - fs.readSync:同步版的 fs.read() 。方法将返回一个 bytesRead (读取的字节数)
fs.readSync(fd, buffer, offset, length, position)
buffer:缓冲区,数据将被写入
offset:buffer写入的偏移量
length:(integer)指定文件读取字节数长度
position:(integer)指定文件读取的起始位置,如果该项为null,将从当前文件指针的位置开始读取数据
三、dash.js解读
- reportEvent:由于MP4Box和DashCast的时移删除特性,程序需要检查文件是否还存在
- sendAndUpdateBuffer:发送并更新缓存中的数据
- onRequest:首先检查所请求的文件的后缀名,然后检查是否存在,notFound的话打印错误信息。若请求文件的后缀名为mpd或者mp4或者m4s,设置头文件信息。然后检查是否我们应该以fragmented files的形式发送MP4文件。若是,则要设置各项参数,然后执行sendFragmentedFile函数。
sendFragmentedFile:如果在文件中有一些数据需要读取,那就进行读取(从next_file_postion位置)到buffer中(在write_offset位置)(调用readFileIntoBuffer)。然后读取boxes并发送,要确保有至少8个bytes去读取box长度和box code,否则需要等待下一次读取(调用readFromBufferAndSendBoxes)。然后判断next_file_position与file_size的大小关系,来分析是否还有数据需要读取。如果没有了,判断boxReadingStatus的状态: ok即需要继续读取,not-enough需要等待另一个文件,stop重置分析器,MP4Box写在文件中的数据没有准备好,end表示文件已经读取完毕。然后进行标记,保证文件内容更新后可以发送。
readFileIntoBuffer:如果buffer长度不够,先增加buffer的大小,然后利用readSync读取数据到buffer中
- readFromBufferAndSendBoxes:其中有部分判断是否是segment_marker的部分,如果是,那么参数endOfSegmentFound改为true。然后判断是none、moov、moof、mdat中的哪种。
0 0
- 利用node.js搭建简易DASH直播系统
- node.js学习:利用express搭建简易网页计算器
- 简易直播平台搭建
- node.js第一课 搭建一个简易网站项目
- 使用node.js搭建简易的个人博客(一)
- 使用node.js快速搭建简易本地HTTP服务
- Node.js 简易服务器
- 利用red5搭建一个简单的流媒体直播系统
- Node.js+Hexo搭建个人博客系统
- Node.js利用Express框架搭建小型网站(上)
- Node.js利用Express框架搭建小型网站(下)
- 利用node.js进行phonegap开发环境搭建
- 利用doker快速搭建node.js运行环境
- Node.js利用Express框架搭建小型网站
- Node.js 实现简易爬虫
- Node.js的简易爬虫
- 使用 Node.js 和 Express.js 搭建简易 HTTP/2 服务器
- FLV视频直播系统-----利用ffmpeg+ffserver搭建最简单的FLV视频直播系统(ubuntu)
- spark2.0 RpcAddress
- leetcode(27) - Remove Element
- 项目 1 - 验证算法之中序线索化二叉树
- sql server自己常用语句
- TestNG中组groups概念以及用法
- 利用node.js搭建简易DASH直播系统
- 11.12acm培训2 Problem E: 字符串的判断
- 盘点物联网领域常用的6大传感器
- jQuery data()
- kmalloc、vmalloc、malloc的区别
- 动态拼接LINQ查询条件的解决方案
- Camera.cullingMask常用操作
- 279. Perfect Squares
- Linux6 fo OracleRAC install