ffmpeg - avcodec_encode_video2 返回 -542398533 仅使用 h264 编码器的外部库中的一般错误

标签 ffmpeg h.264 libavcodec ffmpeg-php android-ffmpeg

pAvframe = GetVideoFrame();

av_init_packet(&pkt);
/* encode the image */
ret = avcodec_encode_video2(pAvCodecCtx, &pkt, pAvframe, &got_packet); //return Generic error in external library
if (ret < 0) 
{
    char errbuf[128];
    const char *errbuf_ptr = errbuf;

    if (av_strerror(ret, errbuf, sizeof(errbuf)) < 0)
        errbuf_ptr = strerror(AVUNERROR(ret));
    av_log(NULL, AV_LOG_ERROR, "%s\n", errbuf_ptr);

    _stprintf_s(szErr,MAX_PATH, _T("Error encoding video frame:: "));
    LOG_ENTRY_ERROR(E_FAIL,szErr);
}



if(ret >= 0)
{
    ret = WriteFrameToFile(&pAvCodecCtx->time_base, m_stVideoStream.pAVStream, &pkt);
    if(ret < 0)
    {
        av_packet_unref(&pkt);

    }
}

它总是返回 - -542398533“外部库中的一般错误”仅适用于 h.264 编码器,请提供解决方案,如果 gop 为零,它会工作一段时间。

最佳答案

pAvFrame 的内容是什么?例如,pix_fmtwidthheight 是什么? pix_fmt 应该(取决于 x264 的构建,但我在这里假设一个典型的配置)是 AV_PIX_FMT_YUV420P。假设 4:2:0 色度子采样,大小应该是偶数。 data 指针和 linesize 是 32 字节对齐的吗?

您能否也提供一些关于您如何初始化编码器的信息,即调用 avcodec_open2() 的代码,特别是您在调用之前在 AVCodecContext 中设置的条目avcodec_open2(),以及对 av_opt_set_*() 的所有调用。

关于ffmpeg - avcodec_encode_video2 返回 -542398533 仅使用 h264 编码器的外部库中的一般错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761684/

相关文章:

ffmpeg - 如何使用 libsrt(安全可靠传输)协议(protocol)配置 ffmpeg?

ffmpeg - 如何同时应用drawtext和watermark?

c - libav - 对 'av_frame_alloc' 等的 undefined reference

c++ - 回声消除

video - 具有 H.264 的 mpeg-4 容器所需的最小 Atom/Box 集(一个流,渐进式视频,无音频)

c++ - 自定义 AVIOContext 的未定义 AVFormatContext 持续时间

ffmpeg - 使用 libavcodec 编码视频时比特率极高

for-loop - 如何在另一个命令之后在批处理脚本中删除 FOR 循环中的文件?

android - 如何在android中使用ffmpeg命令在视频上添加文本水印

video - 如何使用 ffmpeg 从视频中删除除视频和立体声音频流之外的所有内容?