一、概述
本系列文章主要是收集與整理音視頻直播、點(diǎn)播、監(jiān)控等技術(shù)開發(fā)及應(yīng)用,狹義上可特指流媒體的技術(shù)應(yīng)用。
1. 應(yīng)用場景
- 直播
- 點(diǎn)播
- 語音、視頻通話
- 監(jiān)控
- 結(jié)合應(yīng)用,如多媒體音視頻會議系統(tǒng)
2. 相關(guān)技術(shù)
- 網(wǎng)絡(luò)通訊
- 編碼、解碼
- 推流、拉流
3. 一些概念
(1) 編解碼 codec
對數(shù)據(jù)或信號進(jìn)行變化的設(shè)備或程序。
(2) 容器
對多種媒體資源或字幕等進(jìn)行包裝。對數(shù)據(jù)進(jìn)行容器化包裝就稱為封裝,常見的封裝格式是與文件擴(kuò)展名相關(guān)的,如:*.mpg, *.avi, *.mov, *.mp4, *.rm, *.ogg or *.tta
(3) 采樣率
物理和數(shù)學(xué)概念,以一種速度提取數(shù)字信號,單位是赫茲Hz。
(4) 分辨率
通常指圖像或視頻的尺寸。
(5) 幀率 fps
視頻格式每秒鐘播放的靜態(tài)畫面數(shù)量。
(6) 壓縮
對數(shù)字信號壓縮體積,分為兩種:
- 無損格式,例如WAV,PCM,TTA,F(xiàn)LAC,AU,APE,TAK,WavPack(WV)
- 有損格式,例如MP3,windows Media Audio(WMA),Ogg Vorbis(OGG),AAC
二、算法與協(xié)議
1. 視頻編碼標(biāo)準(zhǔn)
主要有:MPEG-n和 H.n 兩種技術(shù):
標(biāo)準(zhǔn)年份組織說明H.1201984ITU-T組織H.2611990ITU-T主要應(yīng)用于視頻會議、視頻通話MPEG11993ISO /IECVCD使用這個壓縮算法H.262/MPEG-2 第二部份1995ISO / IEC 、ITU-TDVD影碟(DVD-Video )、藍(lán)光(Blu-Ray )影碟、數(shù)位視訊廣播(DVB )、SVCDH.2631996ITU-T視訊會議、視訊通話、3G 手機(jī)視訊(3GP )MPEG41999ISO /IECMPEG的第4個版本H.264/MPEG-4 AVC2003ISO / IEC 、ITU-T藍(lán)光(Blu-Ray )影碟、數(shù)位視訊廣播(DVB )、iPod 視訊、高畫質(zhì)DVD(HD DVD )H.2652013ITU
2. 主要流媒體協(xié)議
名稱推出機(jī)構(gòu)傳輸層協(xié)議客戶端目前使用領(lǐng)域劣勢RTSP+RTPIETFTCP+UDPVLC, WMPIPTVRTMPAdobe Inc.TCPFlash互聯(lián)網(wǎng)直播蘋果設(shè)備不提供原生支持RTMFPAdobe Inc.UDPFlash互聯(lián)網(wǎng)直播MMSMicrosoft Inc.TCP/UDPWMP互聯(lián)網(wǎng)直播+點(diǎn)播HTTPWWW+IETFTCPFlash互聯(lián)網(wǎng)點(diǎn)播實(shí)時性差、原生支持不好hls(m3u8)Applehttp瀏覽器直播實(shí)時性差,延遲在10秒以上,分發(fā)HLS碼流低,小文件分發(fā)不是很友好
總結(jié):
- PC/Phone+直播+實(shí)時性要求高:使用flash播放RTMP。
- PC/Phone+直播+沒有實(shí)時性要求:使用RTMP或者HLS均可。
- PC/Phone+點(diǎn)播:使用HTTP或者HLS。
- Phone+WEB+直播:HLS。
其它協(xié)議:
- H.323:是ITU-T第16工作組的建議,由一組協(xié)議構(gòu)成,其中有負(fù)責(zé)音頻與視頻信號的編碼、解碼和包裝;
三、網(wǎng)頁播放音視頻方案
1. rtmp + 插件(非Flash)
- ckplayer
- vlc 插件
- quicktime
- kurento
- vgx
2. rtsp+插件
- streamedia(支持Chrome無插件播放)
- vlc player(不支持RTP/AVP傳輸?shù)腘AT穿孔)
- quicktime
- Realplayer(本身不支持H.264)
3. Flash插件(jwplayer)
- Server(Red5) + 使用RTMP直播協(xié)議
- ffmpeg + xuggle => rtsp轉(zhuǎn)rtmp => flash插件
- ffmpeg + jwplayer
4. 流媒體轉(zhuǎn)為websocket
- ffmpeg + stream-server(nodejs腳本) + h5 Canvas顯示
- ffmpeg + jsmpeg
- ffmpeg + xuggle + h5 video
- ffmpeg + websocket(server) + streamedian.js(開源)
5. webRtc
目前大部分移動端瀏覽器還不支持。