其技術亮點之一“透明通道”
“透明通道”顧名思義就是AnyChat SDK為上層應用提供的一個傳輸資料的通道,由于AnyChat SDK并不關心所傳輸的内容,即所傳輸的資料相對于SDK來說是“透明”的,便稱為“透明通道”。上層應用可以利用SDK提供的透明通道來擴充業務,傳輸的内容沒有限制,可以為任意資料類型緩沖區,單次傳輸大小限制為1000位元組,如可以利用透明通道傳輸業務上自定義的指令,接收方收到資料後,會産生透明通道資料回調,在回調函數裡面進行指令的解析,并進行對應的業務邏輯處理。V2.8.7之前的版本,隻能在目前房間内的任意兩個使用者間,或是向房間内的所有使用者廣播資料。自2.8.7版本開始,便可以在兩個成功登入的使用者之間,用透明通道接口傳輸自定義的資料,每次傳輸資料的大小為1000位元組,如果自己在房間裡面,還可以利用透明通道向房間的所有使用者廣播資料。如果在房間中任意兩個使用者間需要傳輸大量的緩沖區資料,則可使用擴充接口SDK内部會自動完成對大緩沖區的分包、組包、校驗工作。
其技術亮點之二“內建第三方編解碼器”
AnyChat Platform Core SDK支援加載外部音視訊的編碼、解碼子產品(簡稱AnyChat Codec庫),增強系統的可擴充性,同時也滿足一些特定應用環境的特殊需求,如與特定的硬體平台(android、pad)內建時,可以調用硬體編解碼器,實作更高效率的即時通訊應用。AnyChat Platform Core SDK核心已經實作了部分常用的音視訊編碼、解碼子產品,如H.264視訊編碼、解碼算法,ARM-WB、AAC、SPEEX、CELT等音頻編碼、解碼算法。上層應用可以自己定義新的音視訊編碼、解碼算法,在AnyChat平台初始化時,通過相關API接口可以加載新的編碼、解碼子產品,同時上層應用也可以重新實作SDK内置的編碼、解碼算法,在AnyChat平台初始化時,發現加載的音視訊編碼、解碼算法與内置的算法相同,則會采用上層應用提供的相關算法來替代核心的算法。單個音視訊編碼、解碼子產品(AnyChat Codec庫)最多可以同時包含:一個音頻編碼器,一個音頻解碼器,一個視訊編碼器以及一個視訊解碼器。當上層應用需要實作多個編碼器,或是多個解碼器時,可以在多個庫中分别實作,然後分别向AnyChat核心進行注冊。AnyChat Platform Core SDK根據預先定義的CODEC編号(CodecId)來區分不同的CODEC,當使用者需要實作的CODEC不在已定義的CODEC清單中時,可以自行定義新的CODEC編号,當AnyChat核心收到采用新的CODEC編碼的資料時,會根據CODEC編号查詢已注冊的新解碼器,然後調用新的CODEC進行解碼。當上層應用實作的CODEC編号與AnyChat核心預置的CODEC相同時,且輸入(或輸出)為标準碼流時,可以與AnyChat内置CODEC同步工作(如采用AnyChat Codec庫進行編碼,用AnyChat内置庫進行解碼)。當上層應用實作的CODEC編号不存在于AnyChat内置CODEC清單中時,需要在編碼端、解碼端同時注冊新的CODEC,否則将會出現解碼失敗的情況。
其技術亮點之三“支援Android硬體加速”
AnyChat for Android SDK V1.3正式支援Android硬體加速,啟用硬體加速之後,核心将調用Android平台内置的硬體編碼、硬體解碼子產品(CODEC),實作高清晰度的音視訊通話。AnyChat for Android SDK内置軟體編碼、解碼庫,受限于android平台CPU運算能力,對于高分辨率、高幀率的視訊通信效率較低,這時就需要采用硬體加速,通常Android平台的硬體都内置硬體加速晶片,通過硬體加速可以降低對CPU的要求,提高實時性。AnyChat for Android SDK預設采用内置軟體編解碼庫,如需啟用硬體加速則需要進行設定,示例代碼如下(初始化成功之後調用):
1.// 平台硬體編碼設定
2.intuseHardwareCodec = 1;
3.anychat.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_USEHWCODEC, useHardwareCodec);
AnyChat核心會自動探測目前android平台所支援的硬體加速類型(編碼、解碼)并自動加載,并在日志中輸出相關資訊,包括編解碼器類型、名稱等,如下所示:
1.Load codec libmediahwcodec_2.2.so success
2.Load video encodec success!(id:1,name:OMX.Nvidia.h264.encoder)
3.Load video decodec success!(id:1,name:OMX.Nvidia.h264.decode)
Android平台下正常啟用硬體加速的條件是:1、硬體平台具備硬體加速晶片;2、硬體廠家提供相關驅動并加載到Android作業系統核心中(符合OMX标準,如不符合,則需要硬體廠家提供相關技術支援)。預設情況下,Android 2.2核心硬體加速不支援設定碼率(預設1Mbps),Android 2.3、Android 4.0等平台支援設定硬體加速編碼的目标碼率、幀率、關鍵幀間隔等參數,是以在Android 2.3以上的版本上啟用硬體加速将會獲得理想的效果。如果所使用的Android平台具備硬體加速晶片,但不支援标準的硬體加速接口,則需要硬體廠家提供相關的api接口,然後采用AnyChat內建第三方編解碼器技術,便可實作非标準的硬體加速功能。
其跨平台特性也是其與衆不同的亮點之一,已支援Windows、Unix、Linux(x86、ARM)、Mobile、Android、iPhone平台等,目前正在做WP7平台的移植。利用AnyChat SDK的跨平台特性,可以實作嵌入式硬體裝置(ARM平台)與Internet上的Windows平台實作語音、視訊的互動。如果企業的平台目前,或是今後需要實作跨平台的特性,則AnyChat SDK将是不二的選擇。産品的跨平台特性,作業系統的多重選擇,将使企業的應用領域更加的廣闊。
本文轉自 fanxiaojun 51CTO部落格,原文連結:http://blog.51cto.com/2343338/987179,如需轉載請自行聯系原作者