master
			
			
		
		
							parent
							
								
									7a6d9b01f0
								
							
						
					
					
						commit
						3302c953ef
					
				@ -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…
					
					
				
		Reference in new issue