master
kelinlang 5 years ago
parent 7a6d9b01f0
commit 3302c953ef
  1. 127
      设计/ffmpeg推拉流播放器录像.md
  2. BIN
      设计/~$设计.docx
  3. 0
      设计/~WRL0003.tmp
  4. 37
      设计/工作总结-邓军.md
  5. 59
      设计/流媒体平台设计.md
  6. BIN
      设计/设计.docx

@ -0,0 +1,127 @@
# 流媒体平台
## 流媒体底层需求
- 支持第三方接入开发
- 支持内部产品平台
- 支持跨平台(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代码

Binary file not shown.

@ -0,0 +1,37 @@
# 工作总结
## 工作情况
- 完成多路视频以多套节目方式输出到ts流demo开发
- 熟悉kiloview 软件平台
- 熟悉了Streamer代码架构
- 熟悉了开发编译调试流程
- 熟悉了lua demo测试Streamer代码
- 完成h265视频采集推流验证
- 搭建rtmp、rtsp测试体流媒体服务器
- ffmpeg 打rtmp支持h265补丁
- ffmpeg命令行测试推拉h265视频(rtmp、rtsp、udp、hls)
- ffmpeg编写测试demo测试推拉h265视频
- s2Pro开发板验证hdmi视频采集编码成h265视频推流
## 发现问题
- Streamer代码设计
- 部分代码接口定的太死,不适合扩展
- 继承和组合的选择,部分代码不该选择继承的选择了继承
- ...
- Streamer代码编译集成在kiloview整体编译环境,编译调试速度慢
- 流媒体核心开发调试依赖上层lua开发,开发效率低下
## 改善策略
- 建立代码review机制,严格把控代码api和架构设计
- 组件化
- 日志模块
- ...
- 架构设计需要做公开讨论,让所有开发人员清晰架构各部分职责
- 梳理并整理代码,流媒体核心代码设计成sdk,独立于项目开发,编写独立的测试demo
## 工作方向
- 流媒体核心代码sdk化设计及编码
- NDI、webrtc方向研究及落地
- 软件平台化规范化方向研究及落地
## 工作计划
- 待定:工作方向如上,实施计划同领导沟通后再定

@ -0,0 +1,59 @@
# 流媒体平台
## 流媒体底层需求
- 支持第三方接入开发
- 支持内部产品平台
- 支持跨平台(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(不需要lua环境的)
- 接入中间层sdk (需要lua环境的)
## 流媒体底层设计
- 独立仓库、独立编译、提高开发和调试效率
- 设计成sdk,cmake构建跨平台编译系统
- 提供api接入文件、和接入demo
## 流媒体底层sdk化实施步骤
- 讨论需求
- 业务抽象、定义接口,接口文档,审核接口
- 编码
- 编写测试代码
- 测试
- 项目接入

Binary file not shown.
Loading…
Cancel
Save