私有RTP協議和標準流媒體協議

先介紹下RTP協議:
實時傳輸協議RTP(Real-time Transport Protocol)是一個網絡傳輸協議 ,該協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式 。
RTP標準定義了兩個子協議 ,RTP和RTCP
數據傳輸協議RTP,用于實時傳輸數據。該協議提供的信息包括:時間戳(用于同步)、序列號(用于丟包和重排序檢測)、以及負載格式(用于說明數據的編碼格式)。
控制協議RTCP,用于QoS反饋和同步媒體流。相對于RTP來說,RTCP所占的帶寬非常小,通常只有5%。
TCP會通過超時和重傳機制保證數據流的每一個bit的正確性,但這樣會使得無論從協議的實現還是傳輸的過程都變得非常的復雜。而且,當傳輸過程中有數據丟失的時候,由于對數據丟失的檢測(超時檢測)和重傳,會數據流的傳輸被迫暫停和延時。
RTP協議是一種基于UDP的傳輸協議,RTP本身并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務。
對于那些丟棄的包,也可以由上層根據其重要性來選擇性的重傳。比如,對于I幀、P幀、B幀數據,由于其重要性依次降低。
在這里插入圖片描述
RTP是建立在UDP之上的傳輸層協議。
RTP會話過程:
當應用程序建立一個RTP會話時,應用程序將確定一對目的傳輸地址。目的傳輸地址由一個網絡地址和一對端口組成,有兩個端口:
一個給RTP包,一個給RTCP包,使得RTP/RTCP數據能夠正確發送。RTP數據發向偶數的UDP端口,而對應的控制信號RTCP數據發向相鄰的奇數UDP端口(偶數的UDP端口+1),這樣就構成一個UDP端口對。
RTP協議從上層接收流媒體信息碼流(如H.264),封裝成RTP數據包;RTCP從上層接收控制信息,封裝成RTCP控制包。
RTP將RTP 數據包發往UDP端口對中偶數端口;RTCP將RTCP控制包發往UDP端口對中的接收端口,即奇數端口。
接下來再介紹下標準流媒體協議

流媒體(streaming media)是指將一連串數據壓縮后,經過網絡分段發送,即時傳輸以供觀看音視頻的一種技術。

通過使用 streaming media 技術,用戶無需將文件下載到本地即可播放。由于媒體是以連續的數據流發送的,因此在媒體到達時即可播放。可以像下載的文件一樣進行暫停、快進或后退操作。

對于流視頻協議,大多數數字視頻是為了兩件事情:存儲和播放。要滿足這樣的需求,視頻需要滿足小文件和通用播放這兩點。
大多數視頻文件都不適合流式傳輸。流式傳輸需要將音視頻分割成小塊(chunk),將這些小塊按順序發送,并在接收時播放。如果正在直播,則視頻源來自于攝像機;否則,來自于文件。
流媒體協議是一種標準化的傳遞方法,用于將視頻分解為多個塊,將其發送給視頻播放器,播放器重新組合播放。 大部分流協議是碼率自適應(adaptive bitrate)的,這項技術可以在任一時間為用戶提供最佳質量視頻。
編、解碼器(codec)指視頻壓縮技術。不同的編、解碼器用于不同的目的。 即使不需要使用流式協議,視頻也需要使用解編碼器進行編碼、解碼。
通常,視頻格式指視頻文件格式(container format)。常見 container format 包括 .mp4、.m4v、.avi、.mov等,container format 只是一個框(box),框中通常包含視頻文件、音頻文件和元數據。視頻文件格式并不是流式的核心概念。
形象比喻: 假設你是商人,需要批量運輸衣服(衣服就是視頻)。編解碼器就是將衣服壓縮成捆以節省空間的機器容器格式就是裝壓縮后衣服的集裝箱流協議就是將其運輸到目的地的鐵軌、信號燈和駕駛員。
常見的流協議有:RTMP、MPEG-DASH、MSS、HDS、HLS
Reference:
https://www.cnblogs.com/yuweifeng/p/7563265.html
https://blog.csdn.net/zhangbijun1230/article/details/90407090
https://www.jianshu.com/p/d71ceef679de

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376684.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【python】入門學習(五)

字符串: 正索引,從0開始 和 負索引,從-1開始 >>> s apple >>> s[0] a >>> s[1] p >>> s[2] p >>> s[3] l >>> s[4] e >>> s[-1] e >>> s[-2] l >>> s[-3…

實現 winform 異步跨線程訪問UI控件

在開發winform時經常會用到多線程防止界面出現假死現象,比如當你單擊某個按鈕時,需要執行很多代碼,但是在執行過程中想實時的將當前執行的情況報告給用戶,類型進度條或文本什么的。 這個時候很顯然,如果你把要實現的內…

JavaScript對象的創建總結

方式 缺點 優點 基于已有對象擴充屬性和方法 不可重用,沒有約束 無 工廠方法 檢測不出是什么的實例 簡單封裝,可以傳參 構造方法 每創建一個對象就有開辟存放方法的空間 能通過instanceof檢測出實例類型,可以傳參 原型方式 不能…

從WebRtc學習RTP協議

文章目錄TCP為何不適用于實時音視頻UDP->RTPRTP協議結構JittbufferRTP擴展頭RTP填充數據參考TCP為何不適用于實時音視頻 可靠性是以犧牲實時性為代價的。按照TCP原理,當出現極端網絡情況時,理論上每個包的時延可達到秒級以上,而且這種時延…

我的第一個android應用上架,紀念一下

好久沒有寫博客了,最近一直在忙著弄自己的“汽車小助手“http://www.mumayi.com/android-318299.html軟件,終于在今天上架了,盡管今天的廣告收入只有5毛,寫個博客紀念一下。里面嵌入了萬普平臺的廣告,大家都懂得。一天…

內核態與用戶態【轉載】

原文:http://blog.csdn.net/skywalkzf/article/details/5185442 內核態與用戶態是操作系統的兩種運行級別,intel cpu提供Ring0-Ring3三種級別的運行模式。Ring0級別最高,Ring3最低。其中特權級0(Ring0)是留給操作系統代…

解決ListView異步加載數據之后不能點擊的問題

在ListView的onScroll事件中執行異步加載數據,然后使用notifyDataSetChange()函數更新適配器,之后發現listView不能點擊了,這問題苦惱了我半天。最后在一篇博文中發現調用listView的requestFocusFromTouch()函數終于解決了這問題。 Java代碼…

從WebRtc學習RTCP協議

文章目錄RTCP支持的消息類型RTCP協議頭WebRTC的反饋報文RTPFB支持的報文類型:PSFB支持的報文類型:參考RTCP是RTP的控制協議.那么RTCP能對RTP做哪些控制呢?其中最為大家熟知的就是 丟包控制。發送端發送數據后,接收端如果發現有RTP…

白話經典算法系列之中的一個 冒泡排序的三種實現

冒泡排序是很easy理解和實現,,以從小到大排序舉例: 設數組長度為N。 1.比較相鄰的前后二個數據,假設前面數據大于后面的數據,就將二個數據交換。 2.這樣對數組的第0個數據到N-1個數據進行一次遍…

如何用java代碼讓android Market顯示指定的程序以便用戶下載?

Uri uri Uri.parse("market://search?q名稱");Intent i new Intent("Intent.ACTION_VIEW", uri);startActivity(i);//根據應用程序ID應用程序的包名Uri urii Uri.parse("market://details?idcom.xiaoqiu.test");Intent ii new Intent(&quo…

無鎖隊列設計思路以及簡要代碼

文章目錄非并發的一寫一讀環形隊列多讀多寫環形隊列非并發的一寫一讀環形隊列 讀指針: 1、先判斷是否有數據 2、讀取數據 3、操作指針 寫指針: 1、先判斷空間是否足夠 2、寫入數據 3、操作指針 所以代碼也十分簡單: bool putqueue(void* pDa…

vs 2012,vs 2013問題系列

系統環境: 64位 win7 1,問題: 之前能連接tfs進行源碼管理,期間有改過本地電腦的時間,再后來使用vs 2012連接tfs卻失敗了。錯誤碼:TF31002。排除了網絡問題,用戶權限問題,tfs服務器問…

Linux查看系統信息的一些命令

轉:http://www.cnblogs.com/chenwenbiao/archive/2011/07/18/2109983.html 系統 # uname -a # 查看內核/操作系統/CPU信息 # head -n 1 /etc/issue # 查看操作系統版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看計…

CPU Cache對于并發編程的影響

文章目錄引子CPU Cache對于并發的影響讀寫順序對性能的影響字節對齊對Cache的影響小結引子 下面給出兩個極其相似的代碼&#xff0c;運行出的時間卻是有很大差別&#xff1a; 代碼一 #include <stdio.h> #include <pthread.h> #include <stdint.h> #includ…

textarea 在瀏覽器中固定大小和禁止拖動

http://blog.sina.com.cn/s/blog_641d569301011naz.html HTML 標簽 textarea 在大部分瀏覽器中只要指定行&#xff08;rows&#xff09;和列&#xff08;cols&#xff09;屬性&#xff0c;就可以規定 textarea 的尺寸&#xff0c;大小就不會改變&#xff0c;不過更好的辦法是使…

hibernate操作時報錯

報錯&#xff1a;[ERROR] AbstractBatcher Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1原因&#xff1a;視具體情況而定&#xff0c;我這邊是代碼被修改過…

bugfix:MySQL內存使用率無限增長以及kill手法

問題&#xff1a;昨天mysql 宕機了一次&#xff0c;重啟&#xff0c;然后繼續運行業務代碼的時候發現問題&#xff0c;mysql內存占用率上升較快&#xff0c;于是搜了搜&#xff0c;遇到一個&#xff1a; http://blog.itpub.net/29510932/viewspace-2129312/ 根據思路&#xff0…

軟工之初識

我們之前已經在完全不懂軟件工程的情況下&#xff0c;已經做完了兩個小系統&#xff0c;雖然能夠運行&#xff0c;但其中有很多的問題&#xff0c;學習軟工就是讓我們在工程學原理的指導之下去開發和設計軟件。 軟件工程同大多數書講的都是一樣的&#xff0c;首先對軟件工程有一…

perf +火焰圖使用

以mysqld進程為例&#xff1a; [rootVM-90-225-centos ~]# ps -ef | grep mysqld root 9808 9621 0 19:30 pts/7 00:00:00 grep --colorauto mysqld root 16104 1 0 17:30 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/usr/loc…

Mysql 遇到的編碼問題。

今天幫小朋友做一個項目&#xff0c;碰到一個挺搞的問題。在幫她安裝mysql的時候一直是next&#xff0c;沒有去注意一些細節&#xff0c;不曉得有沒有漏掉設置編碼那一部分。。 結果在用sql文件導入數據庫MySQL -h localhost -u root -p xxx < e:\xxx.sql 執行的時候錯誤提…