国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

音視頻通信——直播協議和視頻推流

Cristalven / 1963人閱讀

摘要:本文作為直播介紹系列文的第篇,主要和大家談談直播協議視頻推流等技術內容直播協議流媒體分為直播和點播。使用語言編寫,支持多種協議相關網絡協議和移動設備的流媒體服務器。

近年來直播已成為互聯網行業的大熱話題,直播答題、游戲直播、競賽直播等層出不窮,直播早已成為人們耳熟能詳的技術。事實上直播的興起不僅與新時代人們要求為自己代言的心理有關,同時也得益于帶寬的提速和CDN技術的發展。伴隨著CDN技術的成熟,企業自己部署云服務器做直播也越來越簡單

本文作為直播介紹系列文的第2篇,主要和大家談談直播協議、視頻推流等技術內容

直播協議

流媒體分為直播和點播。通常來說點播使用的都是HTTP協議,直播主要用的是RTMP, HLS, HTTP-FLV等。近年來直播協議也有新發展如DASH,但仍處于起步階段。

直播和點播協議的不同,根源在于他們的業務差異。點播,常見用于優酷,愛奇藝等視頻網站中電視劇、電影等媒體資源的播放,即點播都是錄制好的視頻,一千個人看同一個視頻,無論任何時候點進去獲取到的媒體數據都是一樣的,而直播則不然,不同時候點進來觀看到的信息是不一樣的。

通常來講,直播和點播是相互并不交融的,不過近些年來也有人創新發展——直播時移模式,即點播與直播相結合。其做法是將直播流錄制成一小片一小片的點播文件,然后用戶可以在任何地點、任意終端訪問任意內容。比如你正在看一場球賽的直播,然后有一個鏡頭很精彩,想馬上再看一遍,就可以拖一下進度條回退然后回放,在看完回放后還可以一鍵返回直播。

目前直播分發主要有以下特點:

1,flv居多,ts較少,原因主要是ts標準太過于復雜。Flv的標準開放文檔是11頁,ts的有174頁。對于一般的直播,flv基本能滿足需求,因此ts應用就較少。當然了,我們也可以借助于FFmpeg,但是它會將流媒體方面你想得到的和想不到的都封裝了,不夠精準。

2,rtmp和hls并存。一般來講,rtmp用在PC端上,使用flash播放;hls用作手機和平板上。

3,實時流一般使用rtmp。rtmp能做到1到3秒的延遲,是直播里除了rtsp外延遲最低的協議。PC上支持直接播放,移動端可以用FFmpeg解碼播放。除了rtmp還有其他協議適合實時流媒體播放嗎?

實際上http-flv比rtmp更合適實時流播放。二者延遲一樣,在PC端上都可直接播,移動端需要使用ffmpeg,但http-flv還有個好處就是能穿墻。但大多數CDN并不支持http-flv直播,因為一般的Web服務器不支持http-flv,這是個流媒體問題。

直播服務器

直播中流媒體數據的傳輸主要依賴服務器。目前開源的流媒體服務器,有RED5、CRTMPD、NGINX-RTMP和SRS等

RED5:最古老的基于flash的流媒體服務的開源流媒體服務器。它由Java語言編寫,使用rtmp作為流媒體傳輸協議,與FMS完全兼容;具有流化flv、MP3文件,實時錄制客戶端流為flv文件,共享對象,實時視頻播放、Remoting等功能。但由于其技術較為落后,新入場的直播平臺都已放棄使用。

CRTMPD:使用c++語言編寫,支持多種rtmp協議、IPTV相關網絡協議和移動設備的流媒體服務器。使用單線程異步socket,在當時處于領先水平,但是當NGINX出現后就漸漸淡出大眾視野了。

NGINX-RTMP :基于NGINX模塊,使用C語言編寫的流媒體服務器,也是目前市場上使用最多的流媒體服務器。伴隨著2012年CDN業務的擴展,直播業務需求暴漲,由于NGINX-RTMP中直播點播共用一套服務器,且用戶熟悉信任NGINX;NGINX-RTMP逐漸處于行業壟斷地位。

SRS(Simple Rtmp Sever)是一個國產的流媒體服務器,產品定位是運營級的互聯網直播服務器集群,追求更好的概念完整性和最簡單實現的代碼。據官網介紹其效率非常高,能達到NGINX-RTMP的3倍,而且中英文文檔各有一份,較為適合國內程序員的開發環境。

直播推流

直播推流的總體過程如下圖

如上圖所示,直播中通常在從攝像頭和麥克風等采集到相關數據源后需要做一些封裝前處理,如去噪、美顏、變聲等,然后進行音視頻編碼,再用相適應的流媒體協議封裝,進行碼率自適應后就可投到相關站點展示了。

但是在不同的技術語言下做直播推流的方法也是不同的

如果你是iOS或者Android程序員,做RTMP推流就會更簡單,可以直接找一個推流的數據庫然后給出視頻參數,以及最終的RTMP地址,就能推出一個標準的RTMP流

如果你是C++程序員,會麻煩很多,你至少要掌握采集、編碼、寫流這3個步驟。當然,這些步驟都有庫可以調用,但是即便如此,假設你使用FFmpeg庫,完成上述動作代碼也需要100行左右了;因為其主要的代碼流程就需包括打開音視頻設備、創建編解碼器、設置編碼參數、初始化網絡流句柄、寫協議頭、循環采集數據、解碼數據、編碼數據、格式封裝和寫網絡流。

當然,你可以直接用FFmpeg的命令行,一條命令完成推流,但是這也僅限于測試或者做簡單的demo,真正的工程環境中并不適用,因為這種一條簡單命令的方法在許多功能上都不能支持。

總結:

總之,做直播難易程度主要是和你想實現的功能有關,如果你只是打算自己做測試,那下載一個開源服務器代碼,編碼運行,再用FFmpeg一行命令推流,再用播放器播放也就完成了。但是如果想要商業化,滿足用戶的多種需求,如回聲抑制、連麥直播、美顏濾鏡等,問題的復雜度就呈指數倍上漲了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/11059.html

相關文章

  • 當S8遇上邊緣計算:談阿里云ENS對直播業務場景的支撐

    摘要:阿里云推出的邊緣節點服務這個云產品,就是針對前面提到的目標場景,來應對客戶自建邊緣設施遇到的痛點和挑戰的。針對賽事直播業務場景的優化阿里云團隊針對常規活動賽事電競直播這一業務場景,也做了很多技術優化。 近日,英雄聯盟S8全球總決賽落下帷幕,中國戰隊IG零封FNC奪得冠軍。這場比賽引起了國內網友的超高關注度,也給直播平臺帶來了不小的技術挑戰。虎牙直播平臺結合阿里云邊緣節點技術方案,保障了...

    lily_wang 評論0 收藏0
  • 常青:小程序視頻能力再升級

    摘要:采訪了騰訊云音視頻業務終端研發團隊負責人常青,針對小程序音視頻能力技術升級場景支持政策審核以及未來演進趨勢進行了詳細的探討。 LiveVideoStack采訪了騰訊云音視頻業務終端研發團隊負責人常青,針對小程序音視頻能力技術升級、場景支持、政策審核以及未來演進趨勢進行了詳細的探討。 文 / 常青策劃 / LiveVideoStack LiveVideoStack:常青你好,能否向Liv...

    jerryloveemily 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<