如何让FFmpeg C++代码不输出错误消息?

4
我正在使用FFmpeg C++库解码视频,具体操作如下:
AVPacket* avPacket = av_packet_alloc();
if (!avPacket) std::cout << "av packet error" << std::endl;
int result = avcodec_send_packet(avCodecContext, avPacket);
    if (!result) {
        for ( ; !result ; ) {
            result = avcodec_receive_frame(avCodecContext, avFrame);
            if (!result) {
            ...

这个功能是有效的,但有时候FFmpeg会遇到问题帧并发出以下内容:

[h264 @ 0x7fd3bc2c4b00] no frame!
[h264 @ 0x7fd3bc2c4b00] no frame!
[h264 @ 0x7fd3bc2c4b00] no frame!

这些消息是否可以关闭?我没有看到任何明显的方法来做到这一点。


你可以将标准错误输出重定向到某个地方并将其丢弃。 - user7860670
“是否有可能关闭这些消息?”- 当然。只需编辑库的代码并将其删除即可。然后重新编译它,使用/分发修改后的库与您的应用程序。 - Jesper Juhl
1
命令行FFmpeg允许您使用“-loglevel”参数控制消息。C++接口可能也有一种方法来实现它。 - Boann
2个回答

4
在我的代码中,我使用 av_log_set_callback() 来将输出消息重定向到我的自定义日志文件,这样我就可以在将它们写入日志之前过滤掉不需要的消息。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接