旁徵博引

1.RTP,RTCP,RTSP等網絡協議有何用途和區別 

RTP: Real-time Transport Protocol,實時傳輸協議,一般用於多媒體數據的傳輸。 
RTCP: RTP Control Protocol,實時傳輸控制協議,同RTP一起用於數據傳輸的監視,控制功能。 
RTSP: Real Time Streaming Protocol,實時流協議,用於多媒體數據流的控制,如播放,暫停等。 
RTP/RTCP相對於底層傳輸層,和RTSP,SIP等上層協議一起可以實現視頻會議,視頻直播等應用。

rtsp發起/終結流媒體(通過sdp) 
rtp傳輸流媒體數據 
rtcp對rtp進行控制,同步。

RTSP的請求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顧名思義可以知道起對話和控制作用 
RTP/RTCP是實際傳輸數據的協議 
RTP傳輸音頻/視頻數據,如果是PLAY,Server發送到Client端,如果是RECORD,可以由Client發送到Server 
RTCP包括Sender Report和Receiver Report,用來進行音頻/視頻的同步以及其他用途,是一種控制協議

RTSP的對話過程中SETUP可以確定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以開始或者停止RTP的發送,等等

2.Android 的GUI系統的C語言框架包括:


 1)PixelFlinger (下層的工具庫) 該庫提供像素級別的基本處理,如像素格式定義、畫點、線、多邊形、紋理顏色填充以及多層處理等操作接口,PixelFlinger 的頭文件 和 源代碼分別在 system/core/include/pixelflinger/  、 system/core/libpixelflinger/

       2)libui (GUI的框架庫)它不僅是顯示中樞而且是Android GUI 系統的中樞。改庫提供了包括顏色格式,Egl窗口(用於顯示)、按鍵及事件處理、Surface(顯示界面)、Overlay(顯示疊加層接口)、Camera(照相機接口)等多方面的定義。libui的頭文件和源代碼分別在 frameworks/base/include/ui/ 、 frameworks/base/libs/ui/;

       3)SurfaceFlinger (主要對Surface 建立、控制、管理等功能)源代碼目錄:frameworks/base/libs/surfaceflinger/;

       4)Skia 圖形圖像引擎, 該庫是android 的2D系統的底層實現(圖形,圖像,動畫,svg,文本等多方面的圖形庫,相當於android中圖形系統的引擎),通過JNI 向java層提供圖形功能接口,並且結合Surface 實現各種UI元素的功能;

       5)OpenGL 3D 引擎。android 系統使用OPenGL的標準接口來支持3D圖形功能,其主要內容在frameworks/base/opengl/ 中,其中本地代碼的頭文件路徑爲:frameworks/base/opengl/include/EGL/ 、 frameworks/base/opengl/include/GLES/ ,源代碼在:frameworks/base/opengl/libagl/ 、 frameworks/base/opengl/libs/  ;

       6)各種JNI (向Java層次提供接口)。

       2. Andorid 的GUI系統的JAVA框架層主要包括:

       1)android.graphics 類 (對應Skia 底層庫,提供繪圖接口);

       2)android.view.Surface (構建顯示界面);

       3)android.view.View (各種UI元素的基類);

       4)javax.microedition.khronos.opengles (標準的OpenGL接口);

       5)android.opengl (Android 系統和OpenGL的聯繫層);

3.網絡編程之TCP協議與UDP對比

UDP協議:

1,面向無連接。

2,不可靠協議,容易丟包。

3,速度快。

4,包體積有限制,64k以內。

通常,聊天,在線視頻,凌波。

TCP協議:

1、面向連接。

2、通過三次握手完成連接。

3、是可靠的協議。

4、相對udp稍慢。

4.H263/H264/MPEG4及其差別

 目前比較流行的幾種適合網絡傳輸的視頻編碼有:MPEG4、H263、H264。下面簡要介紹下這些編碼。

(1)MPEG4:MPEG-4標準主要應用於視像電話(Video Phone),視像電子郵件(Video Email)和電子新聞(Electronic News)等。MPEG-4利用很窄的帶寬,通過幀重建技術,壓縮和傳輸數據,以求以最少的數據獲得最佳的圖象質量。它採用面向對象的壓縮方式,根據圖像的內容,把其中的對象(物體、人物、背景)分離出來,分別進行幀內、幀間編碼,並允許在不同的對象之間靈活分配碼率(對重要的對象分配較多的字節,對次要的對象分配較少的字節,從而大大提高了壓縮比)。

(2)H263:263是國際電聯ITU-T的一個標準草案,是爲低碼流通信而設計的。但實際上這個標準可用在很寬的碼流範圍,而非只用於低碼流應用。H.263採用無限制的運動向量以及基於語法的算術編碼,採用事先預測和與MPEG中的P-B幀一樣的幀預測方法。H.263支持5種分辨率,即除了支持QCIF和CIF外,還支持SQCIF、4CIF和16CIF。

(3)H.264是ITU-T的VCEG (Video Coding Experts Group)和ISO/IEC的MPEG(Motion Picture Experts Group)聯合成立的“聯合視頻組”(JVT:Joint Video Team)共同制定的新建議,它等同於ISO的MPEG-4的Part10。可以說,264是263的發展和延續,同時吸收了MPEG的一些優點。它的碼流結構網絡適應性強,增加了差錯恢復能力,能夠很AAC:“Advanced Audio Coding”的縮寫,中文稱爲“高級音頻編碼”,被手機界稱爲“21世紀數據壓縮方式”,AAC所採用的運算方式是與MP3的運算有所不同,AAC同時可以支持多達48個音軌,15個低頻音軌,更多種取樣率和比特率與及有多種言語的兼容能力,更高的譯碼效率,總括來說,AAC可以在對比MP3文件縮小30%的前題下提供更好的音質。好地適應IP和無線網絡的應用,




AAC:“Advanced Audio Coding”的縮寫,中文稱爲“高級音頻編碼”,被手機界稱爲“21世紀數據壓縮方式”,AAC所採用的運算方式是與MP3的運算有所不同,AAC同時可以支持多達48個音軌,15個低頻音軌,更多種取樣率和比特率與及有多種言語的兼容能力,更高的譯碼效率,總括來說,AAC可以在對比MP3文件縮小30%的前題下提供更好的音質。

MP3:網絡數字音樂的風潮是由MP3所引起的,MP3是MPEG1 Layer 3的縮寫,據說是由德國某工作室在研究如何抓取CD音軌時衍生出的計算機文件格式。MP3本身是一種壓縮與解壓縮的計算方式,用來處理高比率的聲音信息。它所生成的聲音文件音質接近CD,而文件大小卻只有其十二分之一。

Speex是一套主要針對語音的開源免費,無專利保護的音頻壓縮格式。Speex工程着力於通過提供一個可以替代高性能語音編解碼來降低語音應用輸入門檻 。另外,相對於其它編解碼,Speex也很適合網絡應用,在網絡應用上有着自己獨特的優勢。同時,Speex還是GNU工程的一部分,在改版的BSD協議中得到了很好的支持。Speex是基於CELP並且專門爲碼率在2-44kbps的語音壓縮而設計的。Speex源碼是基於c語音實現的(也有java實現,效率相對較低)。

5.開源視頻庫ffmpeg、handbrake、mencoder、vlc

基於Android移植ffmpeg的意義在於:

1.解決了Android媒體框架OpenCore的多媒體支持不足,雖然說Android平臺的軟解功耗大,但是從PC機的發展歷史看,Android的視頻處理以後也會走以硬解爲主,軟解爲輔的路線。

2. 解決Android平臺直播的問題,雖然Android支持RTSP/RTP的直播方案,但是這種方案主要是普遍用在電信設備上,基於互聯網的海量視頻服務提供者還是以http live streaming方案爲主,測試時可以用ffmpeg將直播流打包成分段的ts流(如10秒鐘),然後組織成m3u8文件實現完整的直播方案,而且互聯網的直播內容還有很多是基於mms協議的,視頻格式是wmv,要聚集這些內容都是離不開ffmpeg軟解的。

6.flv、mkv、mp4、ts、mxf、mov多種格式的文件容器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章