线程及视频解码过程6-16
线程
一、为了让音视频更好的解码,这里我们需要采用多线程,用一个线程解码视频,一个线程解码音频,我们需要:
1.调用线程库 #include <thread>
2.std:thread t1(); 创建相应线程。
3、为了让每个线程更好的区分资源属于哪一个线程,我们可以用类来实现线程,在对应得类中用成员来区分。
例如:
通过新建一个MyTrhead.h 和MyTrhead.cpp文件创建MyThread类,然后在main函数中来继承父类并添加m_a成员,并实现run函数。这样我们就可以区分m_a成员是属于Thread1线程的资源。
二、视频解码过程
1、首先,每个音视频文件都对应一个结构体AvFormatContext,所以我们需要为他分配空间初始化,用avformat-alloc-context
2、分配完后,我们就可以用avformat-open-input()打开文件。
3、再查找流信息,用avformat-find-stream
4、然后就一帧一帧解码,用av-read-fream函数,将解码得到的AvPacket解码为AvStream
如下图: