ffmpeg:哪些函数是多线程安全的?

时间:2013-03-12 16:15:36

标签: ffmpeg

我已经读过了(在某个地方,现在不再记得并找到它了 - 也许这个问题对我来说已经过时了),有些FFmpeg函数同时从多个线程调用是不安全的。

FFmpeg本身并不是多线程安全的,因为你不应该同时在不同线程的同一个上下文中调用av_read_frameavcodec_decode_audio4 - 但这很明显。

但是,例如,即使在单独的上下文中,似乎avformat_find_stream_info同时从不同的线程调用也是不安全的。因此,为了确保安全,您需要一个全局互斥锁。

是否有不安全的功能列表?

1 个答案:

答案 0 :(得分:11)

我发现了一些讨论:herehere

从目前为止我发现,似乎只有avcodec_openavcodec_close不是线程安全的。

但是,正确的解决方案似乎是使用av_lockmgr_register在FFmpeg中注册一个互斥处理程序,然后由FFmpeg在所需位置自动调用。请参阅herehere。 Chrome也会这样做,请参阅here