⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 [转贴]rdt格式--perfect of imperfect.htm

📁 这个压缩包中包含的内容是流媒体rm格式在线播放时的网络传输方式
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>[转贴]RDT格式--Perfect of imperfect</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="0"> 
<META CONTENT="有什么比Vista的Glass效果更眩?那就是Xgl[转贴]RDT格式  博客 博客中国 博客动力 blog blogdriver blogger 中国" NAME="description"> 
<META NAME="keywords" CONTENT="Perfect of imperfect 有什么比Vista的Glass效果更眩?那就是Xgl[转贴]RDT格式 博客 博客中国 博客动力 blog blogdriver blogger 中国"> 
<link href="diary.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="/jsp/js/UBB.js"></script>
<script type="text/javascript" src="/jsp/js/blog.js"></script>	
</head>
<body>
	<div style="width:750px;margin-left:auto;margin-right:auto;text-align:right;font-size:12px;">
<a href="http://www.bokee.com" target="_blank">首页</a> | 
<a href="http://group.bokee.com" target="_blank">博客群</a> | 
<a href="http://blogs.bokee.com" target="_blank">公社</a> | 
<a href="http://column.bokee.com" target="_blank">专栏</a> | 
<a href="http://bbs.bokee.com" target="_blank">论坛</a> | 
<a href="http://photo.bokee.com" target="_blank">图片</a> | 
<a href="http://news.bokee.com/" target="_blank">资讯</a> | 
<a href="http://reg.bokee.com/account/web/register.jsp"><FONT COLOR="#FF6600">注册</FONT></a> | 
<a href="http://help.bokee.com:8086/help/index.html" target="_blank">帮助</a> | 
<a href="http://lianbo.booso.com" target="_blank"><FONT COLOR="#FF6600">博客联播</FONT></a> | 		
<a href="http://ping.bokee.com:81/memcm/random.b"><FONT COLOR="#FF6600">随机访问</FONT></a>
</div>
  <div id="container">
    <div id="header"><h1 class="title"><a href="index.html">Perfect of imperfect</a></h1></div>
	<div id="category">	<a href="4733671.html" title="上一篇">有什么比Vista的Glass效果更眩?那就是Xgl</a>- -|
		<a href="index.html">回首页</a> | <a href="catalog_2006.html">2006年索引</a>
	| - -<a href="-1.html" title="下一篇"></a></div>
 <div class="entity">
			    <h2 class="diaryTitle">[转贴]RDT格式</h2><B>关键词</B>:			    <a href="http://tag.bokee.com/tag/RDT" target="_blank">RDT</a> &nbsp;&nbsp; 				 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				 
				 <p>
RDT是Real的私有协议,这篇文档并非对RDT格式的标准说明,而是基于MPlayer和Xine的开源代码和自己对字段的理解而成,如发现和实际有所出入,请自己权衡判断。如果哪位朋友发现哪里理解错误,欢迎指正。另外如果有朋友愿意翻译一下贴到Xine或MPlayer的论坛,能为他们带来一些帮助的话,不胜感激。(英文太烂了,)<br /> <br />再次感谢MPlayer和Xine开发者所做出的贡献!Thanks MPlayer and Xine!<br /> <br />正常的RDT包应该以0x40或0x42开头(目前尚未发现其他字节开头的正常包),该字节的第二位标明了StreamId,即0x42=1000010,streamid=1;0x40=1000000,streamid=0。<br /> <br />第二和第三个字节表明了该流的传输编号(seq),依次递增。我认为该值应该是根据PLAY RTSP Request的Response中RTP-Info字段中seq中值为基础递增的。典型的RTP-Info返回值如:<br /><br />    RTP-Info: url=rtsp://localhost/1.rm/streamid=0;seq=0;rtptime=0, url=rtsp://localhost/1.rm/streamid=1;seq=0;rtptime=0<br /><br />意味着stream 0和stream 1传输编号都是从0开始。如果在播放媒体文件当中用户跳转,会发送PAUSE,PLAY指令,该PLAY指令返回值的RTP-Info指明了新的seq,意味着客户端应该丢弃该seq前的数据包,从该seq数据包开始解码。<br /> <br /><br />    Virtual Example:<br />            --&gt;   PLAY rtsp://localhost/1.rm RTSP/1.0 ......  Range: npt=0- .....<br />            &lt;--   RTSP/1.0 200 OK ....... RTP-Info: url=rtsp://localhost/1.rm/streamid=0;seq=0;rtptime=0, url=rtsp://localhost/1.rm/streamid=1;seq=0;rtptime=0<br />     <br />            &lt;--   Transfer Protocol Header(Such as RTSP Embedded Binary Data, see RFC 2326 10.12)  0x40 0x00 0x00 ....<br />            &lt;--   ... 0x40 0x00 0x01 ...<br />            &lt;--   ... 0x42 0x00 0x00 ...<br />            &lt;--   ... 0x40 0x00 0x02 ...<br />            &lt;--   .......<br />            &lt;--   ... 0x40 0x10 0x81 ...<br />            &lt;--   ... 0x42 0x08 0x22 ...<br />     <br />            --&gt;   PAUSE rtsp://localhost/1.rm RTSP/1.0  ........<br />            &lt;--   RTSP/1.0 200 OK ......<br />            --&gt;   PLAY rtsp://localhost/1.rm RTSP/1.0 ..... Range: npt=500- ......       //Jump to npt 500<br />            &lt;--   RTSP/1.0 200 OK .......RTP-Info: url=rtsp://localhost/1.rm/streamid=0;seq=4227;rtptime=0, url=rtsp://localhost/1.rm/streamid=1;seq=2084;rtptime=0<br />     <br />            &lt;--  ... 0x40 0x10 0x82 ....   //Should ignore<br />            &lt;--  ... 0x42 0x08 0x23 ...    //Should ignore<br />            &lt;--  ... 0x40 0x10 0x83 ...   //That's the right message  0x1083=4227<br />            &lt;--  ... 0x42 0x08 0x24 ...   //And so on 0x0824=2084<br />            &lt;--  ... 0x40 0x10 0x84 ...<br /><br />第4个字节还未研究透彻,但是该字节的最后一位代表着该包是否为关键帧(keyframe),如果最后一位为0则是keyframe,为1则不是。关键帧的作用是用来建立索引,所有Real媒体的播放和跳转都是从关键帧开始,非关键帧都是根据关键帧图像做一些移动和变换所生成,因此不能直接从非关键帧开始播放。<br /><br />    Virtual Example:<br />             &lt;--  ...  0x40 0x00 0x00 0x80  .... //Keyframe<br />             &lt;--  ...  0x42 0x00 0x00 0x00  ....  //Keyframe<br />             &lt;--  ...  0x40 0x00 0x00 0x01 ... //Not keyframe<br /><br />第5-8个字节表明该帧的时间(timestamp),毫秒为单位。<br /> <br />第9-10个字节常为0。<br /> <br />后面即为正常的数据包,根据不同编码器而定。<br /> <br /><br />    Virtual Example:<br />            &lt;--  ...  0x42 0x00 0x30 0x41 0x00 0x00 0x05 0x58 0x00 0x00  ......<br />         means: streamid=1, seq=48, keyframe=false, timestamp=1368ms<br />            &lt;--  ...  0x40 0x00 0x20 0x00 0x00 0x00 0x0e 0x83 0x00 0x00  ......<br />         means: streamid=0, seq=32, keyframe=true, timestamp=3715ms<br /><br />非正常的RDT包是在正常的RDT包前面增加了若干字节,猜想类似于RTCP的一些反馈消息,因为实际应用中不增加这些字节,RealPlayer的行为没有发现任何变化。<br />非正常包的首字节第1位肯定是1,即&gt;=80 (10000000)<br />Stream End: 0x??0xFF 0x06 0x?? 0x?? 0x00 0x00 0x00 0x00 0x00 0x00<br />判断流结束可以判断第1个字节不是0x40和0x42,并且第3个字节是0x06。<br />其中第1个字节的第3位可以用于判断是哪个流结束。如0x82=10000010,0x84=10000100(streamid),第4-5个字节表示该流发送的最后一个包的seq。<br />Unknown Packet: 0x?? 0xff 0x08 0x00 0x09 0x?? 0x?? 0x?? 0x?? Normal RDT Packet<br />其中6-10个字节是一个timestamp,一般从0开始,随着发送时间递增,并越来越接近正常RDT包的timestamp。如,即使播放ntp=10-0,即normal RDT packet timestamp = 10000,unknown RDT packet timestamp = 0,但是越放到后面,该值越接近normal RDT packet,尚不知道其作用。<br />一般除了stream end外,其余非正常RDT可以忽略掉,目前尚未发现任何不良影响。<br /><br /><a href="http://crmky.blogdriver.com/crmky/435852.html">原文连接</a></p>
             <p class="diaryFoot">【作者: <a href="javascript:void(0);" onClick="window.open('http://publishblog.blogchina.com/blog/postMessage.b?receiver=148492','发送短消息','width=520, height=455')">rockmen1</a>】【访问统计:<script language="JavaScript" src="http://counter.blogchina.com/PageServlet?pageid=4961895&blogid=260281"></script>】【2006年04月28日 星期五 17:15】【<a href="http://reg.bokee.com/account/web/register.jsp"><FONT COLOR="#FF6600">注册</FONT></a>】【<a href="javascript:window.print();" >打印</a>】 </td>
             </p>
				</div>
 <div class="operation">
 <a name="search"><H3>搜索</H3></a>
	<script type="text/javascript">
<!--
 function submitFormWithChannel(channelname) {
  document.gform.channel.value=channelname;
  document.gform.submit();
  return;
 }
//-->
<!-- End of Script for Clickable Google Logo -->

</script>
<form id="gform" name="gform" method="get" action="http://www.google.cn/search" target="_top">
<table border="0" bgcolor="#ffffff" width=700>
  <tr>
   <td nowrap="nowrap" valign="center" align="middle" height="32">

<!-- Clickable Google Logo -->
   <a href="javascript:submitFormWithChannel('logo')">
       <img src="http://blogteam.bokee.com/pub/images/logo_Google.gif" alt="Google" width="75" height="23" border="0" align="middle"> </a>
<!-- END of Clickable Google Logo -->  
<!-- Google Web Union Search Box -->
    <input type="text" name="q" size="40" maxlength="255" value=""></input>
<input type="button" name="sb" value="站内搜索" onclick="javascript:document.getElementById('channel').value='sitesearch';document.getElementById('sitesearch').value='bokee.com';document.getElementById('gform').submit();">
</input>
     <input type="button" name="sa" value="搜索"  onclick="javascript:document.getElementById('channel').value='internetsearch';document.getElementById('sitesearch').value='';document.getElementById('gform').submit();">

</input>
<input type="hidden" id="sitesearch" name="sitesearch" value="" />
<input type="hidden" name="client" value="aff-bokee">
</input>
<input type="hidden" name="ie" value="gbk">
</input>
<input type="hidden" name="oe" value="gbk">
</input>
<input type="hidden" name="hl" value="zh-CN">
</input>
<input type="hidden" id="channel" name="channel" value="search">
</input></td>
   <td nowrap="nowrap"><!-- End of Google Web Union Search Box -->  </td>
  </tr>
</table>
</form> 
 </div>


 <div class="operation"> 
    <a name="trackback"><H3>Trackback</H3></a>
      <p class="trackback">你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=4961895
 </p>
 </div>

  <div class="operation">
   <a name="relatedDiary"><H3>博客手拉手</H3></a>
   <table>
          </table>
 </div>
 				
<div class="operation">
     <a name="comment"><H3>回复</H3></a>
	 <table width="700" border="0" cellpadding="0" cellspacing="0">     
<tr align="left">
<td rowspan="2" align="center">
<img src="http://blog.bokee.com/img/unknowman.gif">

</td>
<td colspan="4"><H4><a name="comment$(remark.remarkID)"> - 评论人:xiaoxiao</a>
<span>&nbsp;&nbsp;2007-03-26 10:48:23&nbsp;<a  > <img src="http://blog.bokee.com/img/linkblog.jpg" border="0" > </a>  
</span></H4>
 </td>
</tr>    
<tr align="left">
<td colspan="4" valign="top"><P class="comment">请问在什么情况,会出现stream-end?是不是在网络速率不稳,带宽不够的情况下产生?<br>
</P></td>
</tr>
<tr align="left">
<td rowspan="2" align="center">
<img src="http://blog.bokee.com/img/unknowman.gif">

</td>
<td colspan="4"><H4><a name="comment$(remark.remarkID)"> - 评论人:xiaoxiao</a>
<span>&nbsp;&nbsp;2007-03-26 10:47:31&nbsp;<a  > <img src="http://blog.bokee.com/img/linkblog.jpg" border="0" > </a>  
</span></H4>
 </td>
</tr>    
<tr align="left">
<td colspan="4" valign="top"><P class="comment">请问在什么情况,会出现stream-end?是不是在网络速率不稳,带宽不够的情况下产生?<br>
</P></td>
</tr>
</table>
 </div>
  <div class="operation"> 
    <table width="700" border="0" cellpadding="0" cellspacing="0" class="comment">
      <form id="replyForm" method="POST">
        <input type="hidden" name="blogID" value="260281">
        <input type="hidden" name="diaryID" value="4961895">
        <input type="hidden" name="blogDomino" value="rockmen1">
<script>
if(getCookie('userID') == null){        
document.write('<tr><td width="70">发布人:</td>');
document.write('<td width="150"> <input name="remark.authorNameFUI" type="text" size="20" class="inputStyle" maxlength="20"></td>');
document.write('<td width="70">邮箱:</td>');
document.write('<td width="435"> <input name="remark.authorEmail" type="text" size="20" class="inputStyle" maxlength="40"></td>');
document.write('</tr><tr><td>主 页:</td>');
document.write('<td colspan="3"> <input name="remark.authorURL" type="text" class="inputStyle" value="HTTP://" size="63" maxlength="100"></td></tr>');
}else{
document.write('<input type="hidden" name="remark.authorNameFUI" value="Blogchina网友">');
}
</script>
     <tr>
      <td width="70">验证码:</td>
      <td><input name="validateCode"  type="text" class="inputStyle" maxlength="4" size="20"></td><td>&nbsp;&nbsp<img src="http://publishblog.blogchina.com/servlet/getValidateImg" border="0"></td>
     </tr>          
        <tr align="left"> 
          <td colspan="4">评论内容:<br/> <textarea name="remark.remarkFUI" id="remark" cols="60" rows="8" class="textStyle" >
          </textarea> 
          </td> 
        </tr>
        <tr align="left"> 
          <td colspan="4">               
            <input type="button" value="提交" onClick="reply()" >
              
            <input type="reset" value="重置" > </td>
        </tr>
      </form>
    </table>
  </div>
</div>	
<script type="text/javascript" src="http://rockmen1.blogchina.com/extend3.js"></script> 
<div id="footer"><a href="http://blog.bokee.com/">2003-2004 BOKEE.COM All rights reserved</a><br/>
<a href="http://www.blogdriver.com/">Powered by BlogDriver 2.1</a>
</div>

<script type="text/javascript">

<!--

Empty_show = "empty.gif";

TelSense_ad_output = "ZoneID";

TelSense_ad_format = "";

Product_zoneID = "167";

Web_userID = "193";

//-->

</script>

<!-- <script type="text/javascript" src="http://luliangtest.bokee.com/show.php"> -->

</script>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -