執行緒及視訊解碼過程6-16

lookfd發表於2021-06-17

執行緒

一、為了讓音視訊更好的解碼,這裡我們需要採用多執行緒,用一個執行緒解碼視訊,一個執行緒解碼音訊,我們需要:

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

如下圖:

 

相關文章