gpt4 book ai didi

c++ - 使用带多线程的 FFMPEG 解码 h264 文件时出错?

转载 作者:可可西里 更新时间:2023-11-01 10:49:16 27 4
gpt4 key购买 nike

我编写了用于解码许多 .flv 视频文件的代码。每个视频文件都由一个单独的线程解码。当我尝试 1 个线程时,一切正常。但是当我尝试超过 2 个线程时,总是会出现错误“avcodec_open/close() 周围的线程锁定不足”。

我已经搜索过,我知道函数 avcodec_open() 和 avcodec_close() 不是线程安全的。之后,我将互斥锁放在调用两个函数的任何地方。

lockObj.Lock();
avcodec_open/close();
lockObj.UnLock();

但是“avcodec_open/close() 周围线程锁定不足”的错误仍然发生。

谁能告诉我解决办法?

非常感谢,

大统华

最佳答案

lockObj在每个线程中都是同一个对象吗?

互斥锁的作用是阻止多个线程同时调用avcodec_open()。其他线程在到达 lockObj.Lock() 语句时应停止并等待,直到第一个线程调用 lockObj.UnLock()。如果每个线程都有自己的 lockObj,这是不可能的。

我已经将此方法与 QMutex(来自 Qt)一起使用,所以我知道这是可能的。

关于c++ - 使用带多线程的 FFMPEG 解码 h264 文件时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com