avcodec_encode_video2 return -542398533 仅使用 h264 编码器的外部库中的一般错误
avcodec_encode_video2 return -542398533 Generic error in an external library only with h264 encoder
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);
}
}
它总是 return - -542398533 "Generic error in an external library" 仅适用于 h.264 编码器,请提供解决方案,如果 gop 为零,它会工作一段时间。
pAvFrame的内容是什么?例如,什么是pix_fmt
、width
和height
? pix_fmt
应该(取决于 x264 的构建,但我在这里假设一个典型的配置)是 AV_PIX_FMT_YUV420P
。假设 4:2:0 色度子采样,大小应该是偶数。 data
指针和 linesize
是 32 字节对齐的吗?
您能否也提供一些有关如何初始化编码器的信息,即调用 avcodec_open2()
的代码,特别是您在调用 avcodec_open2()
之前在 AVCodecContext
中设置的条目,以及对 av_opt_set_*()
.
的所有调用
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);
}
}
它总是 return - -542398533 "Generic error in an external library" 仅适用于 h.264 编码器,请提供解决方案,如果 gop 为零,它会工作一段时间。
pAvFrame的内容是什么?例如,什么是pix_fmt
、width
和height
? pix_fmt
应该(取决于 x264 的构建,但我在这里假设一个典型的配置)是 AV_PIX_FMT_YUV420P
。假设 4:2:0 色度子采样,大小应该是偶数。 data
指针和 linesize
是 32 字节对齐的吗?
您能否也提供一些有关如何初始化编码器的信息,即调用 avcodec_open2()
的代码,特别是您在调用 avcodec_open2()
之前在 AVCodecContext
中设置的条目,以及对 av_opt_set_*()
.