ffmpeg的H264编码 视频逐渐模糊

万能的互联网,又一次在临危之时解决了我的问题


最近在看ffmpeg里的H264编码,然后试着去做了一下。但是目前发现一个问题,就是编码写入的.264文件,用播放器(VLC,暴风都试过)播放后,发现编码后的视频,开始很清晰,后面慢慢模糊,如下面三个图。

下面是代码:

memcpy (rgb_buff,frame->imageData,nDataLen);
 
         avpicture_fill((AVPicture*)m_pRGBFrame, (uint8_t*)rgb_buff, PIX_FMT_RGB24, nWidth, nHeight);
   
         //将YUV buffer 填充YUV Frame
         avpicture_fill((AVPicture*)m_pYUVFrame, (uint8_t*)yuv_buff, PIX_FMT_YUV420P, nWidth, nHeight);
sws_scale(scxt,m_pRGBFrame->data,m_pRGBFrame->linesize,0,c->height,m_pYUVFrame->data,m_pYUVFrame->linesize);
   
         int  got_packet_ptr = 0;
         av_init_packet(&avpkt);
         avpkt.data = outbuf;
         avpkt.size = outbuf_size;
         u_size = avcodec_encode_video2(c, &avpkt, m_pYUVFrame, &got_packet_ptr);
         if  (u_size == 0)
         {
                 fwrite (avpkt.data, 1, avpkt.size, f);
} else {
                 printf ( "error\n" );
      }


我的问题解决了,只需要在
u_size = avcodec_encode_video2(c, &avpkt, m_pYUVFrame, &got_packet_ptr);
后面加上
m_pYUVFrame->pts++;就可以了。

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/80330880