如果想抓取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解碼失敗個數 但是不太準確