視頻播放(一)數(shù)據(jù)處理

前言

? ? 視頻播放涉及數(shù)據(jù)讀入和輸出,緩存數(shù)據(jù),以及音畫(huà)同步相關(guān)操作。

? ? 相關(guān)技術(shù)涉及,多線(xiàn)程操作,隊(duì)列等。

? ? 按之前的邏輯,逐步深入,會(huì)有不連貫性,這里直接使用最終方案的分解。


線(xiàn)程

? ? pthread玩C/C++的應(yīng)該都用過(guò)。

????pthread_create傳入一個(gè)指針函數(shù),處理好線(xiàn)程內(nèi)操作就好。

隊(duì)列

? ? Queue在C里面需要自己來(lái)實(shí)現(xiàn)。這個(gè)結(jié)構(gòu)不算難,應(yīng)該很快就寫(xiě)出來(lái)了。

讀取


讀取方法

這個(gè)方法是讀取線(xiàn)程的指針函數(shù),F(xiàn)FInstance是自定義的結(jié)構(gòu)體,存儲(chǔ)了視頻每條軌道的信息,默認(rèn)只有音頻和視頻兩條軌道,各自有個(gè)緩存隊(duì)列緩存各自的數(shù)據(jù),其他是每個(gè)軌道特有參數(shù)。

輸出

輸出方法

這個(gè)方法是每天軌道的輸出線(xiàn)程的指針函數(shù),Consumer是輸出具體操作的結(jié)構(gòu),包含了一個(gè)FFInstance,以及操作類(lèi)型,根據(jù)操作類(lèi)型判斷是播放還是其他操作(當(dāng)前只有play方法是有完整實(shí)現(xiàn)的)。


本文作者:劉小宇(Laffey)

本文為原創(chuàng)作品,未經(jīng)允許不得轉(zhuǎn)載。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容