CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  多媒体/流媒体开发

研究过XVID或者参与过XVID开发的高手进来帮看一下马塞克是怎么回事......

楼主veryok()2005-06-21 08:41:16 在 专题开发/技术/项目 / 多媒体/流媒体开发 提问

采用的UDP传输,网络好的时候好象就没什么马塞克,差的时候马塞克很严重,引起这个的原因是什么呢?如何避免?在XVID中的哪些参数是解决这个问题的关键?还有关键帧和非关键帧在解码的时候如何知道等?请高手一一指教一下,多谢了 问题点数:30、回复次数:11Top

1 楼hamimelon(夜过留香)回复于 2005-06-21 09:18:07 得分 10

主要参数:压缩速率、关键帧数量  
  一般来说速率设为700kb、关键帧设为30就没有什么马塞克了Top

2 楼veryok()回复于 2005-06-21 10:44:33 得分 0

压缩速率可以设置吗,哪一个参数啊?  
  我max_key_interval设置为300,难道是这个问题?Top

3 楼psusong(栀子花开)回复于 2005-06-21 11:41:07 得分 10

vop_coding_type   is   located   the   first   byte   after   vop_start_code(0x000001B6)  
   
  the   high   two   bits   of   the   byte   indicates   the   VOP   type:  
  00:I-VOP  
  01:P-VOP  
  10:B-VOP  
   
  Take   care!Top

4 楼psusong(栀子花开)回复于 2005-06-21 11:44:44 得分 0

It   would   be   better   when   you   set   max_key_interval   smaller   than   50.  
  In   fact   you   should   adjust   I   frame   interval   dynamically  
  Top

5 楼yyhzpk(zpk)回复于 2005-06-21 12:27:26 得分 10

采用UDP本来就不可靠,马塞克是由于你一些帧丢掉了,  
  好的方法就是当发现丢帧时,如果是I帧,就把后面的B,P帧  
  就不要显示了,等下一个I帧的出现,建议采用TCP连接会好一些,  
  丢帧由自己控制Top

6 楼veryok()回复于 2005-06-21 12:55:20 得分 0

yyhzpk(zpk)   说的丢帧这个问题的确可能存在,现在主要是我接收到帧后,  
  怎么判断I帧或者是B,P帧,我用的  
  xvid_decore(void   *handle,   int   opt,   void   *param1,   void   *param2);  
  这个来解码的,还有一个问题是既然I帧都丢了,我根本就没接收到,我还怎么去判断是不是丢了?^_^  
   
    psusong所的那个根据头字节来判断,真不好意思,我还是XVID新手,不知道怎么获取这个头字节?汗  
   
  缩小关键帧间隔我想可以解决视频出现马塞克后很快恢复的问题,但好象不能解决马塞克的出现?不知道是不是我理解错误?Top

7 楼httpaspjspphp(小杨大刀)回复于 2005-06-21 12:57:50 得分 0

 
  网络传输的速度,服务端的采集频率,发送采用的协议,丢失的处理,客户端的缓存大小,压缩时的方式(软硬的分别)你要综合起来考虑啊Top

8 楼veryok()回复于 2005-06-21 12:59:08 得分 0

这是具体的参数  
   
  xvid_decore(void   *handle,   int   opt,   void   *param1,   void   *param2);  
   
  opt=XVID_DEC_DECODE  
  param1   xvid_dec_frame_t  
  param2这里要写什么呢,我现在是给了个空指针,我想是不是从这里可以判断出点关于I帧或者是B,P帧的信息,我看了一下代码,好象  
  typedef   struct  
  {  
  int   version;  
   
  int   type;                                       /*   [out]   output   data   type   */  
  union   {  
  struct   {   /*   type>0   {XVID_TYPE_IVOP,XVID_TYPE_PVOP,XVID_TYPE_BVOP,XVID_TYPE_SVOP}   */  
  int   general;                 /*   [out]   flags   */  
  int   time_base;             /*   [out]   time   base   */  
  int   time_increment;   /*   [out]   time   increment   */  
   
  /*   XXX:   external   deblocking   stuff   */  
  int   *   qscale;         /*   [out]   pointer   to   quantizer   table   */  
  int   qscale_stride;     /*   [out]   quantizer   scale   stride   */  
   
  }   vop;  
  struct   { /*   XVID_TYPE_VOL   */  
  int   general;                 /*   [out]   flags   */  
  int   width;                     /*   [out]   width   */  
  int   height;                   /*   [out]   height   */  
  int   par;                         /*   [out]   pixel   aspect   ratio   (refer   to   XVID_PAR_xxx   above)   */  
  int   par_width;             /*   [out]   aspect   ratio   width     [1..255]   */  
  int   par_height;           /*   [out]   aspect   ratio   height   [1..255]   */  
  }   vol;  
  }   data;  
  }   xvid_dec_stats_t;  
   
  这个结构比较有可能获得点什么信息(还是是个输入参数?^_______^),可是真不知道怎么用?Top

9 楼veryok()回复于 2005-06-21 13:01:17 得分 0

TO   httpaspjspphp:假如网络比较好的状况下,效果就很好,不会出现马塞克,出现马塞克只是在网络比较差的状况下,这种情况下可能的就是丢包,所以可能就是丢失的处理上我没处理好,Top

10 楼httpaspjspphp(小杨大刀)回复于 2005-06-21 14:01:56 得分 0

你既然是DUP传输的又是实时传输那就没有重传的必要了  
  试验一下  
  把服务器端的采集频率降到以前的一半或者稍多一点  
  把客户端的缓存变大一些  
  看看有没有效果  
  Top

11 楼psusong(栀子花开)回复于 2005-06-22 10:58:25 得分 0

在网络差的情况,你是怎么处理丢包的?是否会造成各种帧的乱续?  
  这种情况下,应该及时发一个I-VOP过去,重建参考帧序列,否则一定会出现马赛克  
  还有你用UDP传输,是很难进行QoS控制的!你怎么知道/预测网络的好坏?  
   
  你传给解码器的第五个字节的高两位就指示了帧类型(第一帧除外)!  
  Top

相关问题

  • 谁知道Tomcat老堵塞是怎么回事?
  • 怎么回事?
  • 怎么回事???
  • 怎么回事?
  • 怎么回事?
  • 怎么回事
  • 怎么回事????
  • 怎么回事?
  • 怎么回事
  • 怎么回事?

关键词

  • 解决
  • 网络
  • xvid
  • vop
  • 马塞克
  • 参数
  • 关键
  • 传输
  • 速率
  • 判断

得分解答快速导航

  • 帖主:veryok
  • hamimelon
  • psusong
  • yyhzpk

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo