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 энкодера просьба представить решение, если гоп равно нулю это работает некоторое время.avcodec_encode_video2 вернуть -542398533 Generic ошибку во внешней библиотеке только с h264 кодер
Я попытался установить av_opt_set с тремя вариантами av_opt_set (pAvCodecCtx-> priv_data, "предустановленного", "медленный", 0); av_opt_set (pAvCodecCtx-> priv_data, "tune", "zerolatency", 0); av_opt_set (pAvCodecCtx-> priv_data, "x264opts", "no-mbtree: sliced-threads: sync-lookahead = 0", 0); tune и x264opts сделали работу, но я хочу знать, что это такое –
не прикасайтесь к priv_data, вы можете av_opt_set() на pAvCodecCtx, и это будет сделано правильно. Что значит «Я хочу знать, что это такое»? –
'av_opt_set (pAvCodecCtx-> priv_data, "x264opts", "нет-mbtree: нарезанные нити: синхронизирующих = 0 касательно последующего текста", 0);' что значение этого метода и я попытался передать только pAvCodecCtx чем снова avcodec_encode_video2 возвращение - 542398533 –