线程及视频解码过程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-创建音视频读取,解码,播放线程

FFmpeg解码H264及swscale缩放详解

Qt音视频开发13-视频解码线程基类的设计

PyQt5学习笔记--摄像头实时视频展示多线程处理视频编解码

h264,265实时视频流解码及人脸追踪的实现

三线程加速无损视频解码