我已经厌倦了寻找有关该主题的解决方案。有人可以帮忙吗?

AVOutputFormat* m_outFormat;
AVFormatContext* m_formatContext;
AVCodecContext* m_videoCodecContext;
AVCodec* m_videoCodec;

码:
avcodec_register_all();
av_register_all();
m_outFormat = av_guess_format(NULL,filePath().toUtf8().constData(),NULL);
//filePath ended like ".mp4"
if (!m_outFormat)
    return; //all is fine
avformat_alloc_output_context2(&m_formatContext,NULL,NULL,filePath().toUtf8().constData());
m_formatContext->oformat->video_id = CODEC_ID_H264;
m_outFormat=m_formatContext->oformat;
////////////////////////////////////////////////////////////////////
m_videoCodec=avcodec_find_encoder(CODEC_ID_H264);
m_videoStream = avformat_new_stream(m_formatContext,m_videoCodec);
if (m_videoStream)
    return; //all is fine
m_videoCodecContext = avcodec_alloc_context3(m_videoCodec);
m_videoCodecContext->codec_id = CODEC_ID_H264;
m_videoCodecContext->width = 1280;
m_videoCodecContext->height = 720;
m_videoCodecContext->codec_type = AVMEDIA_TYPE_VIDEO;
m_videoCodecContext->pix_fmt = PIX_FMT_YUV420P;
av_codec_open2(M_videoCodecContext,m_videoCodec,NULL);

我收到错误消息:[libx264 @ .....]编解码器类型或ID错配。
返回av_codec_open2(..)(-22错误)。我在哪里弄错了?更多信息:
  • 最后一个ffmpeg
  • Mac Os x 10.10
  • libx264已安装
  • av_guess_format(...)之后的
  • 我在m_outFormat中获得了audio_codec = CODEC_ID_H264,video_codec = CODEC_ID_NONE,长名称MP4(MPEG-4第14部分)。
  • avformat_alloc_context3(...)之后的
  • 我在m_formatContext中获得了audio_codec_id = video_codec_id = CODEC_ID_NONE。
  • avcodec_find_encoder(CODEC_ID_H264)之后的
  • 我在m_videoCodec中具有名称=“libx264”,id = CODEC_ID_MPEG1VIDEO。
    如果您可以说,您到底需要什么,我可以分享更多信息。
  • 最佳答案

    我找到了答案……太愚蠢了……我有旧的 header ,来自旧的ffmpeg来源,但有来自新来源的库。。所以我更换了新的 header ,所有错误都消失了!我不更改上面的代码。

    09-07 10:47