2013-05-15 35 views
3

我正在將一些代碼從FFMPEG 0.8轉換爲FFMPEG 1.2。在調用方法avcodec_open2()時出現錯誤:「指定的像素格式%s無效或不支持」。我使用的格式是:AV_PIX_FMT_RGB24。它應該默認啓用,對吧?FFMPEG - 格式不可用?

下面是我的代碼:

av_register_all(); 

codec = avcodec_find_encoder(AV_CODEC_ID_MPEG2VIDEO); 

if(!codec) 
{ 
    throw SystemException("codec not found"); 
} 

codecContext = avcodec_alloc_context3(codec); 

codecContext->bit_rate = 200000; 
codecContext->time_base.den = 1; 
codecContext->time_base.num = 90000; 
codecContext->gop_size = 8; 
codecContext->pix_fmt = AV_PIX_FMT_RGB24; 

_codecContext->width = 320 
_codecContext->height = 240 

if(avcodec_open2(_codecContext, _codec, NULL) < 0) 
{ 
    throw SystemException("Unable to open codec"); 
} 

回答

4

在ffmpeg的MPEG2/MPEG1 AV_PIX_FMT_RGB24的最新版本不支持。

您將需要使用AV_PIX_FMT_YUV420PAV_PIX_FMT_YUV422P

所以我如果你的輸入PIX格式不是AV_PIX_FMT_YUV420P/AV_PIX_FMT_YUV422P,你需要一個轉換。您可以使用Sws_Contextsws_scale

+0

非常感謝你! –

+1

記錄在哪裏? –