目录流媒体手册........................................................21.前言:.........................................................22.运行环境:.....................................................23.协议处理流程:.................................................24.测试环境搭建:.................................................34-1.rtspserver:..............................................34-2.VLCmediaplayer...........................................34-3.Ethereal:.................................................35.协议数据分析:.................................................35-1.数据分析文件:.............................................35-2.rtsp协议分析:.............................................46.代码实现:.....................................................76-1.实现分析:.................................................76-2.常见错误:.................................................76-3.功能缺陷:.................................................76-4.期望:.....................................................76-5.后期计划:.................................................87.附:...........................................................8流媒体手册通过网络传输音视频数据,在市场应用中逐渐被广泛使用,为了解决个厂商之间都采用协议不统一,造成不便,开始对协议标准进行统一1.前言:鉴于以前编写的流媒体解码代码,文档,等操作手册未能及时跟上,现将这方面进行一个详细总结,和代码重新规划,便于您快速上手和入门,以便大家一起更深入交流,在此我深刻认识到靠一个人的力量是不够的2.运行环境:操作系统:windowsxp虚拟操作系统:vmlinux-centos5.2使用工具:VLCmediaplayerEtherealLive53.协议处理流程:rtsp:客户端向服务器发出服务请求,包括,询问服务器支持哪些操作,建立会话,建立传输方式,申请,音视频数据通道,发送播放请求,退出会话操作等rtp:负责传输音视频数据,音视频真实数据都在rtp协议负载类型中rtcp:统计网络丢包率,可根据网络承载量动态变更发送数据包的频率如:我现在处理不过来了,你那边数据慢发送一些,或你发的数据太慢了,可以尝试多发一点,我处理的过来4.测试环境搭建:4-1.rtspserver:Live555rtspserver开源代码:搭建过程不在介绍,以上运行在centos5.2linux2.6内核中4-2.VLCmediaplayer设置播放:选择连接协议:注:192.168.1.152为我安装live555的linux机器4-3.Ethereal:在开始传输,音视频数据前,可以先开启抓包工具,以便保存数据,对协议分析注:如何使用,如何抓包,请自行google恭喜:通过以上方法,你可以发现一个快速学习rtsp/rtp/rtcp流媒体协议的方法,对抓包数据分析你可以很快对以上协议处理流程有了很深刻认识,避免前期查看专业资料,对积极性的打击5.协议数据分析:5-1.数据分析文件:live5555-2.rtsp协议分析:输入数据包过滤类型:rtsp协议常用字段:OPTIONS:客户端向服务器发送option操作请求,询问服务器可提供哪些服务,返回200ok表示服务器成功响应DESCRIBE:客户端向服务器发送DESCRIBE请求,获取相关会话服务信息,可获取服务器相关参数等(如:服务器名称,协议类型,视音频通道号)返回200ok表示服务器成功响应SETUP:客户端向服务器发送SETUP请求,告诉服务器自己请求音/视频的client_port(本机接收数据使用端口),服务器向客户端返回对应音/视频的server_port(需要客户端连接的端口)返回200ok表示服务器成功响应,其中偶数表示rtp端口,奇数表示rtcp端口视频SETUP:音频SETUP:注:以上过程可看出客户端会告之服务器自己的cli_ip,cli_port,告诉服务器向这个端口和ip发送音/视频数据,服务器会告之客户端自己的ser_ip,ser_port,告诉客户断连接这个ip和端口PLAY:客户端向服务器发送PLAY请求,正式发送申请播放请求PAUSE:客户端向服务器发送PLAY请求,暂停发送数据操作TEARDOWN:客户端向服务器发送TEARDOWN请求,关闭退出消息通过对以上数据包分析,可以对rtsp有初步了解,如想继续深入,时便可以去看rfc了5-3.rtp协议分析:输入数据包过滤类型:5-4.rtcp协议分析:主要用于流量控制和拥塞控制的服务控制协议,主要有五种报文,常用的是RR(接收报文),SR(发送报文)注:以上可以发现每间隔一定周期,会发送一个sr报文,其中一个目的是为了便于发现客户端还在不在,如果客户端不定期向发送SR报文服务器便会停止向客户端发送数据6.代码实现:6-1.实现分析:1)建立基于tcp连接的套接字,连接端口554,发送rtsp相关命令2)解析相关参数(音频通道,视频通道,音/视频ser_port)3)建立基于udp的套接字,客户端操作:绑定本地ip和cli_port,接服务器ip和ser_port接收数据4)定时象服务器(rtspserver)发送SR报文,可以是空报文,防止收不到音/视频数据5)集成,把收到音/视频数据交给底层处理函数,显示还原到屏幕上6)添加数据缓冲或其它智能算法通过以上分析,可以明确知道从哪些方面设计和考虑,实现自己的rtsp客户端程序6-2.常见错误:icmpdestinationunreachableportunreachable原因:未成功绑定本地端口关闭了rtspfd没发送rtcp(receiverreport),注:live555版本中不发送也可以连续接收数据,其它版本有事会有检测,需注意6-3.功能缺陷:解析音/频频通道号解吸音/视频server_port数据缓冲注:会根据业余时间安排完成,代码只是一个基本框架很多内容可自己修改和优化,期待你将优化后代码发送给我共享6-4.期望:本软件做为开源软件发布,如果你对软件进行相应版本修改,请将修改地方和内容发送给我,便于项目不断更新,和共同学习6-5.后期计划:编写rtspserver代码,如果随有这方面经验和资料请给予共享Email:kingersun@163.comQQ:486486237.附: