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.
127 lines
2.5 KiB
127 lines
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.事件通知
|
|
## 三方库
|
|
## sdk代码
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|