Android IOS WebRTC 音視頻開發總結(六)-- iOS開發之含淚經驗

 

前段時間在搞webrtc iOS開發,因此將標題改成了Android IOS WebRTC 音視頻開發總結, 下面都是開發過程當中的經驗總結,轉載請說明出處(博客園RTC.Blacker):html

 

1. IOS WebRTC音視頻編譯和下載: 有過android WEBRTC編譯下載經驗再去弄IOS,你會發現簡單多了,再有問題,可參考:android

1.一、http://www.cnblogs.com/ProbeStar/p/3411510.html  記住有MAC和IOS兩個版本,要指定好你想要哪一個版本.ios

1.二、webrtc ios不支持直接用xcode編譯,他給出的解決方案:經過xcode調用ninja,經過ninja編譯,跟命令行同樣的效果,不過調試方便多了。c++

 

2. 正確區分armv7 armv7s i386平臺,ios開發編譯的時候常常會碰碰到找不到armv7 .a文件之類的錯誤:web

2.一、armv7,armv7s,amd64是真機用的,i386是模擬器用的,明白了這一點對你解決相似問題頗有幫助。設計模式

2.二、查看.a文件架構的命令:lipo -info libwebrtc.a   xcode

2.三、合併.a文件的命令:lipo -create lib.armv7.a lib.arm64.a -output lib.a架構

2.四、合併不一樣.a文件的命令:libtool -static -o dest.a lib*.a; strip -S -x -o dest2.a -r dest.a;app

2.五、webrtc現已支持arm64(我已經編譯成功了),這也是響應蘋果商店上架審覈要求,詳見:https://developer.apple.com/news編碼

 

3. 正確區分.m和.mm文件:

3.一、有一次編譯出現一個奇怪的問題,提示找不到string.h文件,折騰了半天都沒搞定,很納悶這文件不是系統自帶的嗎?後來才發現是本身.m文件裏面調用了C++代碼形成的,解決方式就是將.m改爲.mm。

 

4. webrtc iOS開發與調試:

4.一、調試webrtc在Android基本上都是經過日誌(後面會寫到怎麼加日誌),但i可將代碼加進去調試,爲蘋果點贊,VS還沒作這麼好。

4.二、xcode裏面object c. c. c++代碼能夠相互調用,好強,這個優勢讓我一眼就喜歡上了Xcode,

 

5. 代碼架構都是同樣的,因此弄懂了一套再去弄另外一套就比較容易了,不過若是不熟悉另外一個平臺開發則仍是要點成本的:

5.一、講設計模式的書不少,其實優秀源代碼就是最好的書籍,webrtc代碼就是一本介紹涉及模式的優秀書籍,如工廠模式,模版模式。

5.二、有些模的具體實現仍是有些不同的,如音頻設備操做在android上用的是opensles,蘋果上就不是這麼搞的。

 

6. 視頻的時候圖像顯示不了或一方有圖像另外一方沒有圖像,具體緣由不少:

6.一、首先你得經過抓包查看收發數據是否正常,其次邏輯判斷找出可能出問題的模塊,最後經過調試或設置斷點來具體查找。

6.二、理清視頻圖像捕獲、處理、編碼、發送、接收、解碼、顯示、驗證這個邏輯對你處理相似問題有很大幫助,後面會整理流程圖。

6.三、開始視頻前會先發送KeyFrame(KeyFrame和DeltaFrame分別表示是完整圖像仍是差別圖像), KeyFrame間隔可自定義.

6.四、 不少人容易混淆RTP RTCP RTSP:RTP RTCP是傳輸層協議,RTSP是應用層協議,相似http。 

 

最後:關於問別人問題,發現不少新手在一些羣裏問的問題要麼很泛,要麼別人已經回答了N次,同時寄但願於大神出來幫他直接解決,甚至巴不得別人幫你調試代碼,太不現實了,不過你願意另外花錢買服務又另當別論了,依個人觀察來看真正的大牛都是不怎麼說話的,基本上都在潛水.

 

更多經驗陸續補充...

相關文章
相關標籤/搜索