執行緒
一、為了讓音視訊更好的解碼,這裡我們需要採用多執行緒,用一個執行緒解碼視訊,一個執行緒解碼音訊,我們需要:
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
如下圖: