求解ffmpeg 解码通过rtp接受的h264数据出现花屏/马赛克

zjx88ba 2014-07-10 08:06:04
求解ffmpeg 解码通过rtp接受的h264数据出现花屏/马赛克


求高手帮忙解答,下面列出rtp接受和解码关键代码:

while ((pack = GetNextPacket()) != NULL)
{
if((int)pack->GetPayloadType() == 2)
{
if(pack->HasMarker())//如果是最后一包 ;
{

if (m_current_size == 0)
{
CRTPSessionUtils::DecodeOneFrame(pack->GetPayloadData(),(int)pack->GetPayloadLength());
}else{
CRTPSessionUtils::DecodeOneFrame(m_buffer,m_current_size);//解码一帧数据;

}
m_current_size = 0;
}
else{
memcpy(m_buffer + m_current_size,pack->GetPayloadData(),pack->GetPayloadLength());
m_current_size += pack->GetPayloadLength();

}

}

DeletePacket(pack);
}


解码部分:

void CRTPSessionUtils::DecodeOneFrame(uint8_t *pBuffer,int dwBufsize)
{

CRTPSessionUtils::packet.data = pBuffer;
CRTPSessionUtils::packet.size = dwBufsize;
avcodec_decode_video2(CRTPSessionUtils::pCodecCtx,CRTPSessionUtils::pFrame,&(CRTPSessionUtils::frameFinished),&(CRTPSessionUtils::packet));//对packet中的帧进行解码
if (CRTPSessionUtils::frameFinished)
{

int newSize = 152064;

unsigned char *buf = new unsigned char[newSize];
buffer_current_frame= new uint8_t[newSize];

int height = CRTPSessionUtils::pCodecCtx->height;
int width = CRTPSessionUtils::pCodecCtx->width;

int a=0,i;
for (i=0; i<height; i++)
{
memcpy(buf+a,CRTPSessionUtils::pFrame->data[0] + i * CRTPSessionUtils::pFrame->linesize[0], width);
a+=width;
}
for (i=0; i<height/2; i++)
{
memcpy(buf+a,CRTPSessionUtils::pFrame->data[1] + i * CRTPSessionUtils::pFrame->linesize[1], width/2);
a+=width/2;
}
for (i=0; i<height/2; i++)
{
memcpy(buf+a,CRTPSessionUtils::pFrame->data[2] + i * CRTPSessionUtils::pFrame->linesize[2], width/2);
a+=width/2;
}

memcpy(buffer_current_frame,buf,newSize);
bufferIsNull = true;

delete [] buf;

}

}
...全文
977 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21216233 2015-09-11
  • 打赏
  • 举报
回复
LZ还在吗? 拼帧 这部分的代码有没有呢? 如果还有,想参考学习一下,邮箱184154692@qq.com 谢谢
yejun556688 2014-11-11
  • 打赏
  • 举报
回复
你好,你的代码能发给我参考一下么?我是刚开始研究ffmpeg的,想参考您的代码学习一下。我的邮箱at1306@foxmail.com
zjx88ba 2014-09-28
  • 打赏
  • 举报
回复
Thanks 我问题已经找到 并解决,拼帧最后一包没处理好丢失了
啊呀 2014-09-15
  • 打赏
  • 举报
回复
这些玩应只能看文档,然后找错误,然后想办法提高软件速度
u010421898 2014-09-15
  • 打赏
  • 举报
回复
哎,同情你一下,我也做到这儿了。花屏了不过我是本地文件。我都不好意思结贴了。好好奋斗吧,对于我们这种刚入门的 大神们是看不上的

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧