网络接收H.264视频 解码显示!
设计了H.264接收端的解码显示程序。所发的包是先发送一帧size,然后发送一帧图像。经过测试,在socket接受方面没有问题,但是在显示的时候,确实只能正常显示第一帧,然后画面就变得特别混乱!我跟踪了一下,len的值一开始返回的是size的大小,但是下一帧的时候却是返回1,再下一帧又变为size大小。我不知道视频不能正常显示是不是因为这个原因!请高手分析!
主要的代码部分如下:(不好意思,没分了)
while(1)
{
if(recv(socket,&size,2,0)!=2)
{
perror("recv error")
};
if(recv(socket,&wsabuf.buf[0],size,0)!=size)
{
perror("recv error")
size=0;
};
while(size>0)
{
len=avcodec_decode_video(pcodectx,picture,&got_picture,wsabuf.buf,size);
if(len<0)
{
exit(1);
}
if(got_picture)
{
int numBytes=avpicture_get_size(PIX_FMT_RGB24, pcodectx->width, pcodectx->height);
buffer=new uint8_t[numBytes];
avpicture_fill((AVPicture *)pframeRGB,buffer, PIX_FMT_RGB24,pcodectx->width, pcodectx->width);
int ret=img_convert((AVPicture *)pframeRGB, PIX_FMT_RGB24, (AVPicture *)picture, pcodectx->pix_fmt ,pcodectx->width,pcodectx->height);
displaypicture(pframeRGB->data[0],pcodectx->width,pcodectx->height);
}
size=0
}
}