ut視訊一對一…
在如今的網際網路時代,科技橫行的時代,自己的技術猶如宇宙中的一粒小小的沙塵,迷失了方向,迷失了自己。其實在上周就開始計劃著每周更新最低3篇文字,相當於給與自己擁有學習的動力,再有就是和大家一起研討分享一些技術。因為最近的搬家和最近在給公司開發一個WapAPP商城,所以一直耽誤了更新。下面進入正題。
最近幾年,視頻直播可謂大火。在視頻直播領域,有不同的商家提供各種的商業解決方案,包括軟硬體設備、攝像機、編碼器、流媒體伺服器等。本文要講解的是如何使用一系列免費工具,打造一套視頻直播方案。
視頻直播流程
視頻直播的流程可以分為如下幾部:
採集—->處理—->編碼和封裝—->推流到伺服器—->伺服器流分發—->播放器流播放
UT視訊交友網, ut視訊交友成人網, ut視訊交友情色網, ut視訊交友, UT視訊主播
1.採集
採集是整個視頻推流過程中的第一個環節,它從系統的採集設備中獲取原始視頻數據,將其輸出到下一個環節。視頻的採集涉及兩方面數據的採集:音頻採集和圖像採集,它們分別對應兩種完全不同的輸入源和數據格式。
1.1音頻採集
音頻數據既能與圖像結合組合成視頻數據,也能以純音頻的方式採集播放,後者在很多成熟的應用場景如在線電台等起著非常重要的作用。音頻的採集過程主要通過設備將環境中的模擬信號採集成PCM編碼的原始數據,然後編碼壓縮成MP3等格式的數據分發出去。常見的音頻壓縮格式有:MP3、AAC、HE-AC、Opus、FLAC、Vorbis(Ogg)、Speex和AMR等。
音頻採集和編碼主要面臨的挑戰在於:延時敏感、卡頓敏感、噪聲消除(Denoise)、回聲消除(AEC)、靜音檢測(VAD)和各種混音算法等。
1.2圖像採集
將圖像採集的圖片結果組合成一組連續播放的動畫,即構成視頻中可肉眼觀看的內容。圖像的採集過程主要由攝像頭等設備拍攝成YUV編碼的原始數據,然後經過編碼壓縮成H.264等格式的數據分發出去。常見的視頻封裝格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB和WebM等。
圖像由於其直觀感受最強並且體積也比較大,構成了一個視頻內容的主要部分。圖像採集和編碼面臨的主要挑戰在於:設備兼容性差、延時敏感、卡頓敏感以及各種對圖像的處理操作如美顏和水印等。
視頻採集的採集源主要有攝像頭採集、螢幕錄製和從視頻文件推流。
2.處理
視頻或者音頻完成採集之後得到原始數據,為了增強一些現場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進處理,比如打上時間戳或者公司LOGO的水印,祛斑美顏和聲音混淆等處理。在主播和觀眾連麥場景中,主播需要和某個或者多個觀眾進行對話,並將對話結果實時分享給其他所以觀眾,連麥的處理也有部分工作在推流端完成。
如上圖所示,處理環節中分為音頻和視頻處理,音頻處理中具體包含混音、降噪和聲音特效等處理,視頻處理中包含美顏、水印、以及各種自定義濾鏡等處理。
3.編碼和封裝
3.1 編碼
如果把整個流媒體比喻成一個物流系統,那麼編解碼就是其中配貨和裝貨的過程,這個過程非常重要,它的速度和壓縮比對物流系統的意義非常大,影響物流系統的整體速度和成本。同樣,對流媒體傳輸來說,編碼也非常重要,它的編碼性能、編碼速度和編碼壓縮比會直接影響整個流媒體傳輸的用戶體驗和傳輸成本。
1)視頻編碼的意義
原始視頻數據存儲空間大,一個 1080P 的 7 s 視頻需要 817 MB
原始視頻數據傳輸占用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘
而經過 H.264 編碼壓縮之後,視頻大小只有 708 k ,10 Mbps 的帶寬僅僅需要 500 ms ,可以滿足實時傳輸的需求,所以從視頻採集傳感器採集來的原始視頻勢必要經過視頻編碼。
2)基本原理
為什麼巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術是什麼呢?核心思想 就是去除冗餘信息:
a.空間冗餘:圖像相鄰像素之間有較強的相關性
b.時間冗餘:視頻序列的相鄰圖像之間內容相似
c.編碼冗餘:不同像素值出現的機率不同
d.視覺冗餘:人的視覺系統對某些細節不敏感
e.知識冗餘:規律性的結構可由先驗知識和背景知識得到
3)編碼器的選擇
視頻編碼器經歷了數十年的發展,已經從開始的只支持幀內編碼演進到現如今的 H.265 和 VP9 為代表的新一代編碼器,下面是一些常見的視頻編碼器:
1)H.264/AVC
2)HEVC/H.265
3)VP8
4)VP9
5)FFmpeg
註:音頻編碼器有Mp3, AAC等。
3.2 封裝
沿用前面的比喻,封裝可以理解為採用哪種貨車去運輸,也就是媒體的容器。
所謂容器,就是把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起的標準。容器使得不同多媒體內容同步播放變得很簡單,而容器的另一個作用就是為多媒體內容提供索引,也就是說如果沒有容器存在的話一部影片你只能從一開始看到最後,不能拖動進度條,而且如果你不自己去手動另外載入音頻就沒有聲音。下面是幾種常見的封裝格式:
1)AVI 格式(後綴為 .avi)
2)DV-AVI 格式(後綴為 .avi)
3)QuickTime File Format 格式(後綴為 .mov)
4)MPEG 格式(文件後綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
5)WMV 格式(後綴為.wmv .asf)
6)Real Video 格式(後綴為 .rm .rmvb)
7)Flash Video 格式(後綴為 .flv)
8)Matroska 格式(後綴為 .mkv)
9)MPEG2-TS 格式 (後綴為 .ts)
目前,我們在流媒體傳輸,尤其是直播中主要採用的就是 FLV 和 MPEG2-TS 格式,分別用於 RTMP/HTTP-FLV 和 HLS 協議。
4.推流到伺服器
推流是直播的第一公里,直播的推流對這個直播鏈路影響非常大,如果推流的網絡不穩定,無論我們如何做優化,觀眾的體驗都會很糟糕。所以也是我們排查問題的第一步,如何系統地解決這類問題需要我們對相關理論有基礎的認識。
推送協議主要有三種:
1.RTSP(Real Time Streaming Protocol):實時流傳送協議,是用來控制聲音或影像的多媒體串流協議, 由Real Networks和Netscape共同提出的;
2.RTMP(Real Time Messaging Protocol):實時消息傳送協議,是Adobe公司為Flash播放器和伺服器之間音頻、視頻和數據傳輸 開發的開放協議;
3.HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現的基於
HTTP的流媒體傳 輸協議;
RTMP協議基於 TCP,是一種設計用來進行實時數據通信的網絡協議,主要用來在 flash/AIR 平台和支持 RTMP 協議的流媒體/交互伺服器之間進行音視頻和數據通信。支持該協議的軟體包括 Adobe Media Server/Ultrant Media Server/red5 等。
它有三種變種:
1.RTMP工作在TCP之上的明文協議,使用埠1935;
2.RTMPT封裝在HTTP請求之中,可穿越防火牆;
3.RTMPS類似RTMPT,但使用的是HTTPS連接;
RTMP 是目前主流的流媒體傳輸協議,廣泛用於直播領域,可以說市面上絕大多數的直播產品都採用了這個協議。
RTMP協議就像一個用來裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流。這些通道中的包都是按照固定大小的包傳輸的。
5.伺服器流分發
流媒體伺服器的作用是負責直播流的發布和轉播分發弁遄C
流媒體伺服器有諸多選擇,如商業版的Wowza。但我選擇的是Nginx,它是一款優秀的免費web伺服器。
6.播放器流播放
主要是實現直播節目在終端上的展現。如果使用的傳輸協議是RTMP,所以只要支持RTMP流協議的播放器都可以使用,譬如:
電腦端:VLC等
手機端:Vitamio以及ijkPlayer等
一般情況下我們把上面流程的前四步稱為第一部分,即視頻主播端的操作。視頻採集處理後推流到流媒體伺服器,第一部分弁鄑髡芋C第二部分就是流媒體伺服器,負責把從第一部分接受到的流進行處理並分發給觀眾。第三部分就是觀眾,只需要擁有支持流傳輸協議的播放器即可。
ut視訊一對一-視頻直播開發的流程
ut視訊一對一…
在如今的網際網路時代,科技橫行的時代,自己的技術猶如宇宙中的一粒小小的沙塵,迷失了方向,迷失了自己。其實在上周就開始計劃著每周更新最低3篇文字,相當於給與自己擁有學習的動力,再有就是和大家一起研討分享一些技術。因為最近的搬家和最近在給公司開發一個WapAPP商城,所以一直耽誤了更新。下面進入正題。
最近幾年,視頻直播可謂大火。在視頻直播領域,有不同的商家提供各種的商業解決方案,包括軟硬體設備、攝像機、編碼器、流媒體伺服器等。本文要講解的是如何使用一系列免費工具,打造一套視頻直播方案。
視頻直播流程
視頻直播的流程可以分為如下幾部:
採集—->處理—->編碼和封裝—->推流到伺服器—->伺服器流分發—->播放器流播放
UT視訊交友網, ut視訊交友成人網, ut視訊交友情色網, ut視訊交友, UT視訊主播
1.採集
採集是整個視頻推流過程中的第一個環節,它從系統的採集設備中獲取原始視頻數據,將其輸出到下一個環節。視頻的採集涉及兩方面數據的採集:音頻採集和圖像採集,它們分別對應兩種完全不同的輸入源和數據格式。
UT視訊交友網, ut視訊交友成人網, ut視訊交友情色網, ut視訊交友, UT視訊主播
1.1音頻採集
音頻數據既能與圖像結合組合成視頻數據,也能以純音頻的方式採集播放,後者在很多成熟的應用場景如在線電台等起著非常重要的作用。音頻的採集過程主要通過設備將環境中的模擬信號採集成PCM編碼的原始數據,然後編碼壓縮成MP3等格式的數據分發出去。常見的音頻壓縮格式有:MP3、AAC、HE-AC、Opus、FLAC、Vorbis(Ogg)、Speex和AMR等。
音頻採集和編碼主要面臨的挑戰在於:延時敏感、卡頓敏感、噪聲消除(Denoise)、回聲消除(AEC)、靜音檢測(VAD)和各種混音算法等。
1.2圖像採集
將圖像採集的圖片結果組合成一組連續播放的動畫,即構成視頻中可肉眼觀看的內容。圖像的採集過程主要由攝像頭等設備拍攝成YUV編碼的原始數據,然後經過編碼壓縮成H.264等格式的數據分發出去。常見的視頻封裝格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB和WebM等。
圖像由於其直觀感受最強並且體積也比較大,構成了一個視頻內容的主要部分。圖像採集和編碼面臨的主要挑戰在於:設備兼容性差、延時敏感、卡頓敏感以及各種對圖像的處理操作如美顏和水印等。
視頻採集的採集源主要有攝像頭採集、螢幕錄製和從視頻文件推流。
2.處理
視頻或者音頻完成採集之後得到原始數據,為了增強一些現場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進處理,比如打上時間戳或者公司LOGO的水印,祛斑美顏和聲音混淆等處理。在主播和觀眾連麥場景中,主播需要和某個或者多個觀眾進行對話,並將對話結果實時分享給其他所以觀眾,連麥的處理也有部分工作在推流端完成。
UT視訊交友網, ut視訊交友成人網, ut視訊交友情色網, ut視訊交友, UT視訊主播
如上圖所示,處理環節中分為音頻和視頻處理,音頻處理中具體包含混音、降噪和聲音特效等處理,視頻處理中包含美顏、水印、以及各種自定義濾鏡等處理。
3.編碼和封裝
3.1 編碼
如果把整個流媒體比喻成一個物流系統,那麼編解碼就是其中配貨和裝貨的過程,這個過程非常重要,它的速度和壓縮比對物流系統的意義非常大,影響物流系統的整體速度和成本。同樣,對流媒體傳輸來說,編碼也非常重要,它的編碼性能、編碼速度和編碼壓縮比會直接影響整個流媒體傳輸的用戶體驗和傳輸成本。
1)視頻編碼的意義
原始視頻數據存儲空間大,一個 1080P 的 7 s 視頻需要 817 MB
原始視頻數據傳輸占用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘
而經過 H.264 編碼壓縮之後,視頻大小只有 708 k ,10 Mbps 的帶寬僅僅需要 500 ms ,可以滿足實時傳輸的需求,所以從視頻採集傳感器採集來的原始視頻勢必要經過視頻編碼。
2)基本原理
為什麼巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術是什麼呢?核心思想 就是去除冗餘信息:
a.空間冗餘:圖像相鄰像素之間有較強的相關性
b.時間冗餘:視頻序列的相鄰圖像之間內容相似
c.編碼冗餘:不同像素值出現的機率不同
d.視覺冗餘:人的視覺系統對某些細節不敏感
e.知識冗餘:規律性的結構可由先驗知識和背景知識得到
3)編碼器的選擇
視頻編碼器經歷了數十年的發展,已經從開始的只支持幀內編碼演進到現如今的 H.265 和 VP9 為代表的新一代編碼器,下面是一些常見的視頻編碼器:
1)H.264/AVC
2)HEVC/H.265
3)VP8
4)VP9
5)FFmpeg
註:音頻編碼器有Mp3, AAC等。
3.2 封裝
沿用前面的比喻,封裝可以理解為採用哪種貨車去運輸,也就是媒體的容器。
所謂容器,就是把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起的標準。容器使得不同多媒體內容同步播放變得很簡單,而容器的另一個作用就是為多媒體內容提供索引,也就是說如果沒有容器存在的話一部影片你只能從一開始看到最後,不能拖動進度條,而且如果你不自己去手動另外載入音頻就沒有聲音。下面是幾種常見的封裝格式:
1)AVI 格式(後綴為 .avi)
2)DV-AVI 格式(後綴為 .avi)
3)QuickTime File Format 格式(後綴為 .mov)
4)MPEG 格式(文件後綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)
5)WMV 格式(後綴為.wmv .asf)
6)Real Video 格式(後綴為 .rm .rmvb)
7)Flash Video 格式(後綴為 .flv)
8)Matroska 格式(後綴為 .mkv)
9)MPEG2-TS 格式 (後綴為 .ts)
目前,我們在流媒體傳輸,尤其是直播中主要採用的就是 FLV 和 MPEG2-TS 格式,分別用於 RTMP/HTTP-FLV 和 HLS 協議。
4.推流到伺服器
推流是直播的第一公里,直播的推流對這個直播鏈路影響非常大,如果推流的網絡不穩定,無論我們如何做優化,觀眾的體驗都會很糟糕。所以也是我們排查問題的第一步,如何系統地解決這類問題需要我們對相關理論有基礎的認識。
推送協議主要有三種:
1.RTSP(Real Time Streaming Protocol):實時流傳送協議,是用來控制聲音或影像的多媒體串流協議, 由Real Networks和Netscape共同提出的;
2.RTMP(Real Time Messaging Protocol):實時消息傳送協議,是Adobe公司為Flash播放器和伺服器之間音頻、視頻和數據傳輸 開發的開放協議;
3.HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現的基於
HTTP的流媒體傳 輸協議;
RTMP協議基於 TCP,是一種設計用來進行實時數據通信的網絡協議,主要用來在 flash/AIR 平台和支持 RTMP 協議的流媒體/交互伺服器之間進行音視頻和數據通信。支持該協議的軟體包括 Adobe Media Server/Ultrant Media Server/red5 等。
它有三種變種:
1.RTMP工作在TCP之上的明文協議,使用埠1935;
2.RTMPT封裝在HTTP請求之中,可穿越防火牆;
3.RTMPS類似RTMPT,但使用的是HTTPS連接;
RTMP 是目前主流的流媒體傳輸協議,廣泛用於直播領域,可以說市面上絕大多數的直播產品都採用了這個協議。
RTMP協議就像一個用來裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流。這些通道中的包都是按照固定大小的包傳輸的。
UT視訊交友網, ut視訊交友成人網, ut視訊交友情色網, ut視訊交友, UT視訊主播
5.伺服器流分發
流媒體伺服器的作用是負責直播流的發布和轉播分發弁遄C
流媒體伺服器有諸多選擇,如商業版的Wowza。但我選擇的是Nginx,它是一款優秀的免費web伺服器。
6.播放器流播放
主要是實現直播節目在終端上的展現。如果使用的傳輸協議是RTMP,所以只要支持RTMP流協議的播放器都可以使用,譬如:
電腦端:VLC等
手機端:Vitamio以及ijkPlayer等
一般情況下我們把上面流程的前四步稱為第一部分,即視頻主播端的操作。視頻採集處理後推流到流媒體伺服器,第一部分弁鄑髡芋C第二部分就是流媒體伺服器,負責把從第一部分接受到的流進行處理並分發給觀眾。第三部分就是觀眾,只需要擁有支持流傳輸協議的播放器即可。