9

いくつかのFFmpeg関数を同時に複数のスレッドから呼び出すのは安全ではないことを私は読んだことがあります(どこかで、今は覚えていないので、もう見つけられません-とにかく質問は私にとっては時代遅れになるでしょう)。

FFmpeg自体は、同時に呼び出したり、異なるスレッドから同じコンテキストで呼び出しav_read_frameたりするべきではないという意味で、マルチスレッドに対して安全ではありませんが、それはほとんどの場合明らかです。avcodec_decode_audio4

しかし、たとえば、avformat_find_stream_info別々のコンテキストであっても、同時に異なるスレッドから呼び出すのは安全ではないようです。したがって、これを安全にするには、グローバルミューテックスが必要になります。

安全ではない機能のリストはありますか?

4

1 に答える 1

11

私が見つけたいくつかの議論:ここまたはここ

私がこれまでに見つけたものから、スレッドセーフavcodec_openではないように見えます。avcodec_close

ただし、正しい解決策はav_lockmgr_register、必要な場所でFFmpegによって自動的に呼び出されるミューテックスハンドラーをFFmpegに登録するために使用することです。ここまたはここを参照してください。Chrome もそれを行います。こちらを参照してください。

于 2013-03-12T16:39:09.617 に答える