使用FFMPEG多线程解码h264文件时出错?

时间:2012-07-14 16:13:14

标签: c++ windows ffmpeg decode

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

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

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

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

有人可以告诉我解决方案吗?

非常感谢,

T&安培; T组

1 个答案:

答案 0 :(得分:0)

每个帖子中lockObj是否都是同一个对象?

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

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