如何使用media-server搭建DASH服务

media-server是老陈开源的流媒体服务,里面涉及很多流媒体协议,如果想了解流媒体协议的实现细节,可以走读相关代码,还是相对比较全的,这里讲一下如何使用media-server搭建DASH直播服务

1.media-server编译

media-server的编译可以参考官方的readme
https://github.com/ireader/media-server/blob/master/compile.cn.md

2.搭建DASH服务

media-server提供很多demo供读者使用,在media-server/test下面的test.cpp默认是没有提供DASH服务的,需要自己手动进行添加。

2.1 增加DASH直播流调用接口

在main函数中增加DASH直播流调用接口,代码为

RE_RUN_REG("dash_dynamic_test", argc, argv);

如下图所示:
在这里插入图片描述

2.2 运行demo

修改代码之后,重新编译test,运行demo,命令如下:

./test -c dash_dynamic_test 100.100.108.83 8088 source.flv 768 320

其中,100.100.108.83和8088为DASH服务的监听地址和端口
source.flv为读取的录像文件,DASH直播流的音视频数据从这个文件中读取,注:demo的实现是读取flv录像文件,如果需要其他格式,需要自己修改代码

768 和 320为视频的宽高信息

注:如果遇到FLV中含有元数据信息,需要修改demo的代码,因为demo中碰到codecid不是音视频的时候会assert,需要将dash_live_onflv中default分支进行忽略处理

3.测试

可以使用VLC进行拉流,流名自己定,url格式例如:
http://100.100.108.83:8088/live/livestream.mpd

可以通过抓包和走读代码进一步理解DASH的流程
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node-Media-Server 是一个基于 Node.js 开发的高效流媒体服务器,它支持 RTMP、HLS、HTTP-FLV 等多种协议,可以实现流媒体的推流、转码、分发等功能。以下是使用 Node-Media-Server 实现高效推流的步骤: 1. 安装 Node-Media-Server 可以使用 npm 或 yarn 安装 Node-Media-Server,具体命令如下: ``` npm install node-media-server ``` 或 ``` yarn add node-media-server ``` 2. 创建 Node-Media-Server 实例 在 Node.js 文件中引入 Node-Media-Server 模块,并创建一个 Node-Media-Server 实例,示例如下: ```javascript const NodeMediaServer = require('node-media-server'); const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 60, ping_timeout: 30 }, http: { port: 8000, allow_origin: '*' }, trans: { ffmpeg: '/usr/local/bin/ffmpeg', tasks: [ { app: 'live', hls: true, hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]', dash: true, dashFlags: '[f=dash:window_size=3:extra_window_size=5]' } ] } }; const nms = new NodeMediaServer(config); ``` 3. 监听推流事件 在创建 Node-Media-Server 实例后,可以监听推流事件,例如 `prePublish` 事件,该事件在客户端开始推流之前触发,可以在该事件中进行推流鉴权等操作。示例如下: ```javascript nms.on('prePublish', (id, StreamPath, args) => { const session = nms.getSession(id); // 进行推流鉴权等操作 }); ``` 4. 启动 Node-Media-Server 在配置好 Node-Media-Server 实例并监听推流事件后,可以调用 `nms.run()` 方法启动 Node-Media-Server,示例如下: ```javascript nms.run(); ``` 以上是使用 Node-Media-Server 实现高效推流的基本步骤,可以根据实际需求进行相应的配置和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值