FFmpegのsws_scale延伸フレームとピクセル変換

ボイドConvertYUVFrameToBGRFrame(AVFrame * pYUVFrame、AVFrame * pBGRFrame)
{
 int型nBGRFrameSize = av_image_get_buffer_size(AV_PIX_FMT_BGR24、pBGRFrame->幅、pBGRFrame->高さ、1)。
 uint8_t * pszBGRBuffer =(uint8_t *)av_malloc(nBGRFrameSize)。


 //ピクチャバッファポインタpszBGRBuffer pBGRFrameフレームマウント、手動で除去する必要がある
 av_image_fill_arraysを(pBGRFrame->データ、pBGRFrame-> LINESIZE、pszBGRBuffer、AV_PIX_FMT_BGR24、pBGRFrame->幅、pBGRFrame->高さ、1)。

 構造体SwsContext * pSwsCtx = sws_getContext(pYUVFrame->幅、pYUVFrame->高さ、AV_PIX_FMT_YUVJ420P、
  pBGRFrame->幅、pBGRFrame->高さ、AV_PIX_FMT_BGR24、
  SWS_BICUBIC、NULL、NULL、NULL);


 0 //注意が必要でsrcSliceYを満たすために、または呼び出しが失敗
 sws_scale(pSwsCtx、pYUVFrame->データ、
  pYUVFrame-> LINESIZE、0、pYUVFrame->高さ、
  pBGRFrame->データ、pBGRFrame-> LINESIZEを);
}


コールの例

  AVFrame * pBGRFrame = NULL;
  pBGRFrame = av_frame_alloc()。
  pBGRFrame->幅= 2分の1920;
  pBGRFrame->高さ= / 2 1080。
  pBGRFrame->形式= AV_PIX_FMT_BGR24。
  pVideoc-> ConvertYUVFrameToBGRFrame(PFRAME、pBGRFrame)。

説明:ズームアウトする画像のサイズは、ピクセルフォーマットが変換BGR24


おすすめ

転載: blog.51cto.com/fengyuzaitu/2450099