线程及视频解码过程6-16
Posted ryryrjgc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程及视频解码过程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
如下图:
以上是关于线程及视频解码过程6-16的主要内容,如果未能解决你的问题,请参考以下文章
ijkplayer阅读笔记02-创建音视频读取,解码,播放线程