如果想抓取ffmpeg日志相关信息并作相关处理,可以用ffmpeg日志回调
统计H264解码错误
static int ffmpeg_decoder_error = 0;
static void ffmpeg_log_callback(void *ptr, int level, const char *fmt, va_list vl)
{
if (level > av_log_get_level())
return;
char temp[1024];
vsprintf(temp, fmt, vl);
size_t len = strlen(temp);
if (len > 0 && len < 1024&&temp[len - 1] == '\n')
{
temp[len - 1] = '\0';
}
AVClass* avc = ptr ? *(AVClass **)ptr : NULL;
const char *module = avc ? avc->item_name(ptr) : "NULL";
if (strstr(module, "264"))
{
if (strstr(temp, "error"))
{
ffmpeg_decoder_error++;
}
}
}
av_log_set_level(AV_LOG_INFO);
av_log_set_callback(ffmpeg_log_callback);
样例
ffmpeg_decoder_error = 0;
ret = avcodec_decode_video2(c, frame, &got_picture, &pkt);
这样可以粗略计算H264解码失败个数 但是不太准确