You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
流媒体平台
流媒体底层需求
- 支持第三方接入开发
- 支持内部产品平台
- 支持跨平台(linux、windows、Android、ios...)
- 流媒体输入源
- 视频文件
- 编码芯片
- camera
- 网络流:rtmp、rtsp、hls、udp、webrtc...
- 其他源
- 流媒体输出
- 网络推流:rtmp、rtsp、hls、udp(ts)、webrtc...
- Ndi
- 本地播放器
- 视频文件存储
- hdmi
- 编解码:软编码和硬编码
- 视频:h264、h265
- 音频:aac ...
- 流媒体服务器:设备部署,云服务器
- 编译支持
- 单独编译:适合独立开发
- 集成编译:适合集成到产品开发
中间层
- Lua framework (kiloview)
- 包装底层sdk,提供应用层接入api
- Java framework
- TODO
应用层
- 开发方式
- 接入流媒体底层sdk
- 接入中间层sdk
流媒体底层设计
- 独立仓库、独立编译、提高开发和调试效率
- 设计成sdk,cmake构建跨平台编译系统
- 提供api接入文件、和接入demo
需求
1.依据目前代码,底层使用ffmpeg代码,重新编码实现流媒体推拉流,播放,保存,录像磁盘管理功能
目前代码存在问题
1.集成在kiloview整体编译环境,不方便独立调试、测试、跨平台移植、客户定制
2.对象继承和组合的选择
设计构想
1.代码独立仓库,不依赖目前工程编译系统,cmake实现跨平台编译,减少后续可能的移植工作量
2.代码设计成sdk,提供接入文档,具体业务接入sdk实现业务功能
3.使用C++11编码
需求分解
支持的视频源
1.视频文件
2.网络流(rtmp、rtsp、ts、hls)
3.编码器
4.音视频采集设备
推流
1.rtmp、rtsp、ts
2.可扩展私有协议
编解码
1.软件编解码
2.硬件编解码
录像
1.录像保存
2.磁盘管理
播放器
1.多视频播放
设计要求
1.功能设计SDK化,给业务层提供接口,应对各种需求
2.代码执行效率高,内存占用少
3.独立代码仓库,多系统适配(linux,windows,Android,ios),cmake构建跨平台编译
4.多通道支持
实施步骤
1.讨论需求
2.业务抽象、定义接口,接口文档,审核接口
3.编码
4.编写测试代码
5.测试
6.项目接入
代码结构
基础库
1.日志系统
2.线程池
3.事件通知