c++ - ffmpeg assert - 抛出异常而不是中止

标签 c++ c ffmpeg

我在我的 C++ 应用程序中使用 ffmpeg。

当尝试播放某些文件时,ffmpeg 内部的断言失败,这导致它调用终止我的应用程序的 abort()。我不想要这种行为,而是希望有机会恢复,最好是通过异常。

有人知道我如何解决 ffmpeg/assert 可能终止我的应用程序的问题吗?

编辑:

我现在能想到的唯一方法是更改​​ ffmpeg assert 宏,以便它导致访问冲突,我可以通过 SEH 异常捕获它。丑陋且可能很糟糕的解决方案?

最佳答案

如果“异常”需要编译为 C,您可以使用 setjmp/longjump 对。将 setjmp 放在您的错误处理代码中,并将 longjmp 放在 FFMPG 代码中的 abort 位置。

如果您真的想要捕获真正的异常,除以零可能比随机访问违规更安全。

关于c++ - ffmpeg assert - 抛出异常而不是中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212492/

相关文章:

c - STM32F407 USART1 : Clearing USART_FLAG_TC requires pgm to be halted before actually clearing the bit

c - 消息包 C API

linux - 使用 FFMPEG 录制来自两个麦克风的音频和来自一个网络摄像头和多路复用器的视频

ffmpeg - 在 Windows 上连接会抛出 "Invalid data found when processing input",而它适用于 Mac 和 Linux

ffmpeg - 当编解码器使用 p 帧时,av_seek_frame 会中断 avcodec_decode_video2

c++ - QChartView QLineSeries 通过鼠标点击选择

c++ - 帧缓冲区大小发生变化但无法设置视口(viewport)

c++ - 继承 : call a derived class function from base class

c++ - 先前关闭的文件句柄上 fclose() 的双重释放错误

c - C中的编码指令