- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux下基于jrtplib库的实时传送实现
linux下基于jrtplib库的实时传送实现linux?下基于jrtplib库的实时传送实现一、RTP?是进行实时流媒体传输的标准协议和关键技术?实时传输协议(Real-time?Transport?Protocol,PRT)是在?Internet?上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP?通常使用?UDP?来进行多媒体数据的传输,但如果需要的话可以使用?TCP?或者?ATM?等其它协议。?协议分析?:每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前?12?个字节的含义是固定的,而负载则可以是音频或者视频数据。??????RTP?是目前解决流媒体实时传输问题的最好办法,要在?Linux?平台上进行实时传送编程,可以考虑使用一些开放源代码的?RTP?库,如?LIBRTP、JRTPLIB?等。JRTPLIB?是一个面向对象的?RTP?库,它完全遵循?RFC?1889?设计,在很多场合下是一个非常不错的选择。JRTPLIB?是一个用?C++?语言实现的?RTP?库,这个库使用socket?机制实现网络通讯?因此可以运行在?Windows、Linux、FreeBSD、Solaris、Unix和VxWorks?等多种操作系统上。二、JRTPLIB?库的使用方法及程序实现?(1)JRTPLIB??函数?的使用?a、在使用?JRTPLIB?进行实时流媒体数据传输之前,首先应该生成?RTPSession?类的一个实例来表示此次?RTP?会话,然后调用?Create()?方法来对其进行初始化操作。RTPSession?类的?Create()?方法只有一个参数,用来指明此次?RTP?会话所采用的端口号。?RTPSession?sess;??sess.Create(5000);??b、设置恰当的时戳单元,是?RTP?会话初始化过程所要进行的另外一项重要工作,这是通过调用?RTPSession?类的?SetTimestampUnit()?方法来实现的,该方法同样也只有一个参数,表示的是以秒为单元的时戳单元。?sess.SetTimestampUnit(1.0/8000.0);?c、当?RTP?会话成功建立起来之后,接下去就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP?协议允许同一会话存在多个目标地址,这可以通过调用?RTPSession?类的?AddDestination()、DeleteDestination()?和?ClearDestinations()?方法来完成。例如,下面的语句表示的是让?RTP?会话将数据发送到本地主机的?6000?端口:??unsigned?long?addr?=?ntohl(inet_addr());??sess.AddDestination(addr,?6000);??d、目标地址全部指定之后,接着就可以调用?RTPSession?类的?SendPacket()?方法,向所有的目标地址发送流媒体数据。SendPacket()?是?RTPSession?类提供的一个重载函数对于同一个?RTP?会话来讲,负载类型、标识和时戳增量通常来讲都是相同的,JRTPLIB?允许将它们设置为会话的默认参数,这是通过调用?RTPSession?类的?SetDefaultPayloadType()、SetDefaultMark()?和?SetDefaultTimeStampIncrement()?方法来完成的。为?RTP?会话设置这些默认参数的好处是可以简化数据的发送,例如,如果为?RTP?会话设置了默认参数:??sess.SetDefaultPayloadType(0);??sess.SetDefaultMark(false);???sess.SetDefaultTimeStampIncrement(10);?之后在进行数据发送时只需指明要发送的数据及其长度就可以了:??sess.SendPacket(buffer,?5);??e、对于流媒体数据的接收端,首先需要调用?RTPSession?类的?PollData()?方法来接收发送过来的?RTP?或者?RTCP?数据报。由于同一个?RTP?会话中允许有多个参与者(源),你既可以通过调用?RTPSession?类的?GotoFirstSource()?和?GotoNextSource()?方法来遍历所有的源,也可以通过调用?RTPSession?类的?GotoFirstSourceWithData()?和?GotoNextSourceWithData()?方法来遍历那些携带有数据的源。在从?R
您可能关注的文档
最近下载
- YS-T 578-2006 氟钽酸钾-行业标准规范.pdf
- 资本市场评级那些事.html.pdf VIP
- YS/T 427-2012_五氧化二钽 行业标准.pdf
- 糖尿病酮症酸中毒诊疗指南(中国2型糖尿病防治指南((2022年-2023年)版).docx VIP
- YST751-2024 钽及钽合金牌号和化学成分-报批稿.pdf VIP
- Dsc-931中文说明书.doc VIP
- (2025)患者发生非计划性拔管的应急预案.docx VIP
- 7.2《归园田居(其一)》课件(共18张PPT) 2024-2025学年统编版高中语文必修上册.pptx VIP
- 设计构成与应用:立体构成与应用PPT教学课件.pptx VIP
- 肝脏特异性对比剂对肝脏疾病诊断.ppt VIP
原创力文档


文档评论(0)