Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ FFMPEG格式不可用?_C++_Video_Encoding_Ffmpeg - Fatal编程技术网

C++ FFMPEG格式不可用?

C++ FFMPEG格式不可用?,c++,video,encoding,ffmpeg,C++,Video,Encoding,Ffmpeg,我正在将一些代码从FFMPEG 0.8转换为FFMPEG 1.2。我在调用方法avcodec\u open2()时出错: 指定的像素格式%s无效或不受支持 我使用的格式是:AV\u PIX\u FMT\u RGB24。默认情况下应该启用它,对吗 下面是我的代码: av_register_all(); codec = avcodec_find_encoder(AV_CODEC_ID_MPEG2VIDEO); if(!codec) { throw SystemException(&qu

我正在将一些代码从FFMPEG 0.8转换为FFMPEG 1.2。我在调用方法
avcodec\u open2()
时出错:

指定的像素格式%s无效或不受支持
我使用的格式是:
AV\u PIX\u FMT\u RGB24
。默认情况下应该启用它,对吗

下面是我的代码:

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");
}
av_register_all();
codec=avcodec\u find\u编码器(AV\u codec\u ID\u MPEG2VIDEO);
如果(!编解码器)
{
抛出系统异常(“未找到编解码器”);
}
codecContext=avcodec\u alloc\u context3(编解码器);
codecContext->比特率=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)
{
抛出SystemException(“无法打开编解码器”);
}

最新版本的ffmpeg
MPEG2
/
MPEG1 AV\u PIX\u FMT\u RGB24
不受支持

您需要使用
AV\u PIX\u FMT\u YUV420P
AV\u PIX\u FMT\u yuv42p


因此,如果输入的PIX格式不是
AV\u PIX\u FMT\u YUV420P
/
AV\u PIX\u FMT\u yuv42p
,则需要进行转换。您可以使用
Sws_上下文
Sws_比例

您也可以使用libx264rgb编解码器,而不是libx264,而不是转换为YUV420P。它支持当前的AV_PIX_FMT_RGB24类型。

这是在哪里记录的?您能详细说明如何做到这一点吗?