研究了httprecv相關的代碼,主要是網絡接收TCP的流媒體數據
1,視頻和音頻數據是分包傳遞,檢查了收到的數據包,貌似只有視頻數據。
2,網絡SOCKET模塊採用SELECT模型,如果面對多個連接,效率會跟的上麼,不過這不是服務器,應該夠用了吧
3,邏輯很混亂,模塊沒有劃分開,好多功能都是一個函數執行到底,看的腦殼都大了,線程管理也是沒有一個集中的方案,到處都在開線程。
4,程序指定的什麼IFRAME,PRAME,DFRAME,EFRAME沒搞懂是什麼玩意,都是說視頻的格式的吧,AFRAME應該是音頻。
5,還有接收數據的定長內存池也是看了半天,最後才明白作者的思路,到底要做什麼,全部夾在一起寫,我的天,也太偷懶了吧。
看別人的代碼真是費勁... 還有發送給ipcam的指令好像還有問題,返回的是低清的視頻,好像是320x240還是怎麼的,還需要確認一下,還有序列幀,難道live模式下還會亂序麼,tcp的特性就是先發過來必定先收到,難道ipcam做了live緩存機制來用線程池發送數據的麼...
註明:
STRUCT FRAME裏面的BUFFER就是流媒體數據,FRAMESIZE就是這個緩衝的長度。網絡收發方面的代碼需要重新架構
視頻包裏註明是h264
明天繼續吧 !!