视频幁压缩和解压缩的问题。送1000分(300)

  • 主题发起人 网中戏
  • 开始时间

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
var Ret:integer ;
xvid_encFrame: xvid_enc_frame_t;
xvid_decFrame:xvid_dec_frame_t;
begin
//压缩 xvid_encFrame.bitstream := @FrameBuf[0];
xvid_encFrame.length := -1;
xvid_encFrame.input.csp := XVID_CSP_BGR;
xvid_encFrame.input.plane[0] := lpVHdr.lpData;
xvid_encFrame.input.stride[0] := 320 * 3;
Ret := xvid_encore(xvid_enc.handle, XVID_ENC_ENCODE, @xvid_encFrame,nil);
//编码的大小 //解压缩 xvid_decFrame.general := 0;
xvid_decFrame.bitstream := @FrameBuf[0];
xvid_decFrame.length := Ret;
//输入位流长度 xvid_decFrame.output.csp := XVID_CSP_BGR;
xvid_decFrame.output.plane[0] := @FrameImg[0];
xvid_decFrame.output.stride[0] := 320 * 3;
Ret := xvid_decore(xVid_decode.handle , XVID_DEC_DECODE, @xvid_decFrame, nil);
问题。压缩后的幁大小ret。在自己的程序中边压缩边解压一切正常。当把压缩后的幁数据发到远端。不是一幁。是连续的帧。如何得到各个幁的大小(即Ret)。不需要在发送端发送幁的大小。而是根据收到的连续幁数据自动分析每帧的大小.。提供帮助者可得1000分、也可以再给分
 
应该所有的都发长度的
 
如果可以自动获得幁长度,估计也就不需要xvid_decFrame.length这个参数了。希望有高人可以帮你解决。
 
说的好 以前我也用这个做 视频要加长度的 这个郁闷的是 如果用udp传输 图形质量很差tcp 就好多了
 
这个分数不好赚的。要有一定的水平。我把连续的幁保存成为一个文件。有软件就可以解压出来播放。文件中就是连续帧的数据。没有写入幁的大小。既然它的软件可以解压。肯定是提供数据流分析的。比如幁头或者其它的得到幁的大小才能解。发帧的大小我也可以解决。我问 的问题就是不发幁大小。要从幁数据流中得到幁的大小。每幁分别保存发现基本上都有0x00, 0x00, 0x01, 0xb6 。
 
人家可以 应该就没有问题自己分析把
 
你说 rstp 协议吗?
 
不发送帧的大小肯定是不行的。不发送帧长度,你就不可能组装帧数据,你就不可能进行播放,像xvid这样的压缩技术,再换原的时候也是单个单个帧还原的,不是一下还原多个,虽然你传送的是连续的,但是必须分开解压缩,分别播放才行。
 
顺便说一句,大富翁这个论坛还是这么简陋啊。哎。。。。。。
 
我记得xvid解出来,是可以得到RECT的。我当时是用的C++,DELPHI版的XVID代码是哪里的?
 
你对视频压缩的理解是错误的吧,这个最重要的是个关键帧,别的帧都是些变化信息而已,保证关键帧正常就好了,udp没问题的
 
再给你讲一下,xvid编码以后 最后一个参数不用nil,用xvid_enc_stats_t结构就能得到输出的编码后的信息,这个其实你不需要知道的,解码会自动计算并解码的,好好研究一下xvid源码就知道了varoutBmp:xvid_enc_stats_t ;zeromemory(@out,Sizeof(out));outBmp.version:=版本...;其他的参数可以不填Ret := xvid_encore(xvid_enc.handle, XVID_ENC_ENCODE, @xvid_encFrame,@outBmp);
//编码后信息:outBmp.length//帧长度,这个就是,xvid使用很简单的,好好研究一下就知道了
 
具体没有做过啊。关注。。
 
顶部