剛來公司還沒轉正時犯建,接觸視頻方面的第一個任務是將一系列JPEG圖片封裝為AVI視頻文件镀琉。當時我沒有接觸過FFMPEG,而且也不知道公司項目代碼上能不能用第三方庫,所以就自己看AVI格式文檔挪哄,自己寫代碼組裝。通過這個任務琉闪,對AVI格式有了了解迹炼,另外第一次將數據結構中的雙向鏈表應用到實際工作中。完成后交付給其它部門的同事颠毙。至于到底有沒有使用我寫的模塊斯入,就不得而知了。
后來工作上涉及到視頻方面的知識越來越多蛀蜜,我也開始學習ffmpeg刻两,還對jpeg、bmp文件讀寫進行封裝滴某。后來將其結合MFC編寫小工具磅摹,在產品的字符疊加、Gama調節(jié)等方面進行調試使用霎奢。在研發(fā)項目時户誓,其它部門同事不懂上位機軟件,上達領導層要求我們做支持椰憋,這些知識也幫了不少忙厅克。
再后來,接觸平臺底層視頻采集方面的多了橙依,發(fā)現自己對YUV顏色空間了解不夠证舟。又去搜索學習,同時還參考常見的YUV播放器寫了一個屬于自己的YUV播放器窗骑。并支持多種YUV格式女责。做此工具,純粹是為了學習YUV轉RGB格式创译,因此那段時間抵知,甚至將像素點畫出來做對照。經過實打實式的練習后软族,終于對YUV格式有了比較深入的了解刷喜。
再后來,被合并到另一個部門立砸,合并之初大領導叫我們幾個搞平臺的人到辦公室掖疮,有意安排我們向流媒體方向發(fā)展,計劃很宏偉颗祝,領導承諾讓我們專注去搞——當然事實是不可能的浊闪。隨后部門制定的計劃中有很多項是流媒體的恼布,于是我開始接觸h264標準。但標準中的語法描述實在晦澀難懂搁宾,對于學習新知識折汞,我一向不習慣只看理論,也看不透盖腿。只有用代碼去接觸才能了解爽待。當時市面上的h264碼流分析工具幾乎是商用的且不開源。公司購買的軟件亦只能在一臺PC上運行翩腐。后來找到雷博寫的h264碼流分析工具堕伪,使用了開源的h264碼流分析庫。于是我也參考著使用MFC自己實現栗菜。
不到一年時間吧欠雌,公司策略似乎要著手h265研發(fā)。于是我也著手了解h265疙筹。經過慎重考慮富俄,決定在原來的碼流分析工具基礎上添加h265的支持,接著便使用ffmpeg實現h264而咆、h265裸視頻文件的播放霍比、轉碼保存功能。當時分析工具較少且要授權暴备,試用版功能有很多限制悠瞬。有感于雷博的開源精神,我所寫的YUV播放器及碼流分析器都開源放到github網站涯捻。
所有這些實踐浅妆,都基于MFC,因為不熟悉其它界面庫障癌,另外也是因為MFC是我第一個認真自學的界面庫凌外,對此有感情√握悖——至今我還能清晰記得許多年前的暑假在大學宿舍邊聽《似是故人來》寫MFC的情形康辑。
工作后對視頻方面的知識,我都是斷斷續(xù)續(xù)地接觸轿亮、學習的疮薇,無他,工作所需我注。比如學習h264按咒,是因為公司打算自己實現h264視頻編碼秒咨。而做YUV播放器則完全是為了提高自身技能所實施的吸申。如果不是當時下決心寫睡互,以公司策略隨時變化的管理風格栗柒,我還沒緩過神來已經被安排另一個事務了嗽冒,也不可能有自己寫的工具開源出來呀伙。我還記得很多個傍晚,老婆在炒菜添坊,而我在VS寫h265語法解析剿另。
李遲 2016.10 中旬