线程及视频解码过程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

如下图:

 

posted @ 2021-06-17 08:51  jianzhui  阅读(201)  评论(0编辑  收藏  举报