dlna原理
术语:DLNA: Digital Live Network Alliance, 资源共享协议标准以实现设备之间互联、互通和互操作功能 MS:媒体服务器 MR:媒体播放器 CP 控制点 CDs:内容目录服务 AVT:媒体传输服务 RCs:呈现控制服务 CM:连接管理服务 UPnP 基于IP网络的设备即插即用协议
原理:DLNA协议主要是解决局域网中设备之间的互联、互通和互操作问题,在UPnP基础之上定义了设备交互规范,其中AV框架规定了设备(媒体服务器MS,控制点CP,媒体播放器MR)之间的通信规范,具体分为以下步骤:
1. 控制点基于SSDP协议查找/发现网络中媒体服务器
2. 控制点调用媒体服务器MS的内容目录服务CDs的Browser接口浏览媒体文件,选中感兴趣的媒体文件后,调用媒体播放器MR的媒体传输服务AVT的SetAVTransport接口把链接地址URI发送给媒体播放器。
3. 控制点调用媒体播放器上的AVT和RCs服务来控制媒体播放(播放,暂停,声音和亮度调节)
交互过程:
媒体播放器和媒体服务器之间基于http(标配)或rtsp(可选)进行媒体文件传输,控制点不参与媒体传输过程,控制点主要是来协调媒体服务器和媒体播放器之间的互操作功能的,比如选择两者都支持的传输协议和媒体格式,通常会有个UI界面来操作各自提供的接口(UPnP Action),比如手机,遥控器等,下面描述控制点播放视频的交互过程。
1. 发现DLNA网络中的音视频设备(媒体服务器和媒体播放器):控制点会自动通过UPnP的发现机制来检测到网络中的媒体服务器和媒体呈现器,一种通过手机以组播的形式发送UPnP M-SEARCH命令来查找设备,另外是网络中的音视频设备会间隔地发送ssdp:alive消息告诉控制点其设备信息和其提供的服务。
2. 查找、浏览网络中媒体服务器的视频:调用媒体服务器提供的内容目录服务接口ContentDirectory::Search()或Browser(),媒体服务器会以didl-lite规范返回目录及文件信息,其中包括支持的传输协议和格式
3. 获取媒体播放器的协议信息:控制点调用媒体播放器连接管理服务的接口ConnectionManager::GetProtocolInfo()来获取传输协议和支持的数据格式列表。
4. 匹配传输协议和数据格式:控制点在第2步从媒体服务器获取到的视频格式和支持的传输协议,在第3步同样获取到媒体播放器支持的传输协议和媒体数据格式,通过比较选择两者都支持的协议和数据格式。
5. 配置媒体服务器和媒体播放器:DLNA中媒体服务器和媒体播放器必须都支持连接管理服务,控制点通过调用ConnectionManger::PrepareForConnection()接口来做预配置处理并返回传输服务(AVTransport)的实例Id,以方便多个控制点操作状态的管理
6. 选取要播放的视频:控制点根据第2步中返回的视频列表中选择要播放的视频,调用音视频传输服务AVTransport::SetAVTransportURI()接口来告诉媒体播放器资源存储地址。
7. 开始视频传输:控制点调用媒体播放器的音视频传输服务AVTransport:play() /stop()接口进行控制操作,这个时候实际就是媒体播放器从媒体服务器上下载视频播放,控制点不参与视频数据的传输过程。
8. 视频显示控制:控制点调用媒体播放器的呈现控制服务RendringControl的接口来调整显示效果,如控制亮度,对比度,声音大小等。
9. 重复选择下一个视频:控制点通过调用AVTransport::SetAVTransportURI() 或者AVTransport::SetNextAVTransportURI()接口来重复上面的过程播放下一个视频。
10. 播放结束:当控制点不想再播放视频时,就可以调用连接管理服务ConnectionManager::ConnectionComplete()接口来结束媒体服务器和媒体播放器