前言
? ? 視頻播放涉及數(shù)據(jù)讀入和輸出攒暇,緩存數(shù)據(jù),以及音畫同步相關(guān)操作子房。
? ? 相關(guān)技術(shù)涉及形用,多線程操作臼疫,隊(duì)列等蝉绷。
? ? 按之前的邏輯,逐步深入樟氢,會(huì)有不連貫性解愤,這里直接使用最終方案的分解镇饺。
線程
? ? pthread玩C/C++的應(yīng)該都用過。
????pthread_create傳入一個(gè)指針函數(shù)送讲,處理好線程內(nèi)操作就好奸笤。
隊(duì)列
? ? Queue在C里面需要自己來實(shí)現(xiàn)。這個(gè)結(jié)構(gòu)不算難李茫,應(yīng)該很快就寫出來了揭保。
讀取
讀取方法
這個(gè)方法是讀取線程的指針函數(shù),F(xiàn)FInstance是自定義的結(jié)構(gòu)體魄宏,存儲(chǔ)了視頻每條軌道的信息秸侣,默認(rèn)只有音頻和視頻兩條軌道,各自有個(gè)緩存隊(duì)列緩存各自的數(shù)據(jù),其他是每個(gè)軌道特有參數(shù)味榛。
輸出
輸出方法
這個(gè)方法是每天軌道的輸出線程的指針函數(shù)椭坚,Consumer是輸出具體操作的結(jié)構(gòu),包含了一個(gè)FFInstance搏色,以及操作類型善茎,根據(jù)操作類型判斷是播放還是其他操作(當(dāng)前只有play方法是有完整實(shí)現(xiàn)的)。
本文作者:劉小宇(Laffey)
本文為原創(chuàng)作品频轿,未經(jīng)允許不得轉(zhuǎn)載垂涯。