我正在使用Visual Studio 2010 c ++开发一些自定义直接显示过滤器。我正在使用ffmpeg进行编码过程,如果我将测试作为标准控制台运行,那么任何ffmpeg错误都会显示在控制台窗口中,正如人们所预料的那样。但是主应用程序是一个没有控制台窗口的Windows应用程序。当我从ffmpeg收到错误时,我可以使用的是一个相当通用的错误返回号码,看看控制台窗口中显示的内容会很棒。
是否可以从ffmpeg获取输出到控制台窗口的输出以显示在其中一个'Studio输出窗口中。我在工具 - >选项 - >调试 - >常规中选中了“将所有输出窗口文本重定向到即时窗口”选项,但这不是正确的选项,但无论如何都不起作用。
谢谢!
戴夫
答案 0 :(得分:1)
您可以使用自定义输出例程重定向ffmpeg输出:
av_log_set_callback(&FfmpegLog);
void FfmpegLog(void *ptr, int level, const char *fmt, va_list vl)
{
static char message[8192];
const char *module = NULL;
if (ptr)
{
AVClass *avc = *(AVClass**) ptr;
if (avc->item_name)
module = avc->item_name(ptr);
}
vsnprintf_s(message, sizeof message, sizeof message, fmt, vl);
std::cout << "[ffmpeg][" << (module ? module : "") << "][" << level << "] : " << message;
}