PJSIP是很好的開源sip協議棧。
我們的一個項目使用pjsip庫, 維護一段時間了,但是沒有深入的分析pjsip代碼。總有些說不過去。
PJSIP的代碼量還是比較大的。拿到代碼有些不知道如何入手。
我分析代碼的思路,想從sip協議爲出發點。分爲以下兩大模塊:
1.sip協議的實現
sip的基本方法:register、invite、ack、cancel、bye
分析這幾個method的處理邏輯。
2.媒體流
sip通話建立後要進行媒體數據的發送和接收。
弄清楚音視頻流處理流程(以分析音頻爲例):
採集-> 編碼->RTP打包->RTP發送
RTP接收->RTP解包->解碼->播放
以上只做流程的分析,不糾結於具體的細節實現。
接下來的1個月的空閒時間,將用來閱讀代碼(pjproject 1.6),做成文檔。
閱讀代碼後的實踐:
1. 在invite請求的message header中增加一個自定義的字段
2.在接收的sip消息中,增加一個新的解析(parser)字段支持
3.增加一個新的音頻編碼的支持(如果mp3或aac)