縮寫:
MSE:media source extensions
EME:encrypted media extensions,加密媒體擴展協議(EME)
DASH:dynamic adaptive streaming over http,基於HTTP的動態自適應流技術(DASH)
defination :
MSE is a W3C HTML Working Group specification for a JavaScript interface to play back media data within a browser.
DASH is a standardized file format, much like Apple’s HTTP Live Streaming (HLS) or Microsoft’s Smooth Streaming.
EME is another JavaScript API that enables HTML5-based DRM by extending MSE with application programming interfaces (APIs)
to control the playback of protected content.
DRM:digital rights management
HLS:HTTP Live Streaming
VOD:視屏點播內容
CDN:content delivery network
IR sensor:紅外傳感器
RC:remote control 遙控器
armeb是大端字節序的arm
armdirectfb是支持directfb硬件圖像加速的arm
FHD:full high definition
mux、demux:複用,解複用
'video/mp4; codecs="avc1.42E01E, mp4a.40.2"'解析:
video/mp4 代表這是一段 mp4 格式封裝的視頻,'avc1' 代表視頻採用 H.264 編碼,隨後是一個分隔點,之後是 3 個兩位的十六進制的數
,這 3 個十六進制數分別代表:
AVCProfileIndication(42)
profile_compability(E0)
AVCLevelIndication(1E)
第一個用於標識 H.264 的 profile,後兩個用於標識視頻對於解碼器的要求
'mp4a' 代表此視頻的音頻部分採用 MPEG-4 壓縮編碼。
隨後是一個分隔點,和一個十六進制數(40),這是 ObjectTypeIndication,40 對應的是 Audio ISO/IEC 14496-3 標準。(不同的值具有
不同的含義,詳細可以參考官方文檔)
然後又是一個分隔點,和一個十進制數(2),這是 MPEG-4 Audio Object Type,維基百科中的解釋是 "MPEG-4 AAC LC Audio Object Type
is based on the MPEG-2 Part 7 Low Complexity profile (LC) combined with Perceptual Noise Substitution (PNS) (defined in
MPEG-4 Part 3 Subpart 4)",具體是什麼意思就不翻譯了,其實就是一種 H.264 視頻中常用的音頻編碼規範。
關於<video>標籤所支持的視頻格式和編碼:
MP4 = MPEG 4文件使用 H264 視頻編解碼器和AAC音頻編解碼器
WebM = WebM 文件使用 VP8 視頻編解碼器和 Vorbis 音頻編解碼器
Ogg = Ogg 文件使用 Theora 視頻編解碼器和 Vorbis音頻編解碼器
---------------------
vedio多個源,匹配第一個適配的源
<video width="500" height="250" controls="controls">
<source src="movie.ogg" type="video/ogg">
<source src="movie.mp4" type="video/mp4">
您的瀏覽器不支持此種視頻格式。
</video>
---------------------
muted:muted 音頻輸出應該靜音
poster: URL 規定視頻下載時顯示的圖像,或者在用戶點擊播放按鈕前顯示的圖像。
preload preload 如果出現該屬性,則視頻在頁面加載時進行加載,並預備播放。
如果使用 "autoplay",則忽略該屬性。
流媒體文件解釋:
1:流媒體= 流(流動的)+媒體(音視頻)可以是 yuv/pcm h264 aac mp4 flv ts任意一種
2:媒體文件 = 原始流(yuv/pcm)等未壓縮的格式(排除光感壓縮和RGB壓縮) || h264/aac這種裸流(沒有時間戳的流文件)||
mp4/flv/ts這種封裝格式文件(裏面包含音視頻字幕等)。
要支持流式播放可以有兩種方式:1,文件本身支持,如flv格式 2,服務器支持,使用rtp/rtcp等流服務器
MSE流程解釋:
MPEG-DASH是MSEs的一種媒體傳輸格式的實現。那讓我們瞭解一下基於HTML5 MSE的視頻播放器的工作步驟:
下載並解析配置文件,MPEG-DASH中使用MPD文件(HLS中使用m3u8文件),配置文件中提供了視頻流的詳細信息,諸如視頻流的碼率質量種類
,分辨率數量,音頻數據數量,字幕數量等,以及媒體文件數據塊的名字,源服務器或者CDN的信息。
評估客戶端設備上的可用帶寬,選擇適當的視頻質量以實現無緩衝流,截止在用JavaScript來下載後續的媒體片段。
JavaScript代碼將下載的媒體片段移交到MSE的緩存中處理。
底層硬件拿到了這部分緩存,就開始進行解碼以及渲染視頻,把結果返回給video標籤。
這就是一種Netflix和Youtube都在使用的基於HTML5的自適應媒體播放。像dash.js 和 Bitdash HTML5 player都是現今相當成熟的解決方案
,這就讓開發者和視頻內容商很輕鬆的切換到HTML5的自適應碼率播放方案,同時DASH-IF項目是開源的。
DRM發展:
對許多視頻服務商來說,MPEG-DASH已經是最好的技術選型。DASH項目以越來越快的速度推出,使用Widevine DRM的MES和EME看起來是最可行
的替代方案。此外,MPEG-CENC可以支持不同的DRM系統都只支持同一版本的加密內容,並且,EME的內容是基於MSE的MPEG-DASH內容格式。
因此,不同的DRM系統組合,如用於Chrome和安卓的Widevine Modular,用於IE和Edge的Microsoft PlayReady,還有用於Firefox的Adobe
Primetime。由於每一個平臺都要有一個版本,這使得內容供應商有了更多的動機去轉向MPEG-DASH作爲國際標準,因爲它對流媒體、DRM以及
CDN都具有更好的靈活性。
目前主流瀏覽器支持MSE和EME現狀
Environment Player Technology Media DRM
Chrome HTML5 MSE MPEG-DASH Widevine Modular
Internet Explorer 11 Windows 8.1 HTML5 MSE MPEG-DASH PlayReady
Internet Explorer (other) Flash, Silverlight MPEG-DASH ClearKey, PlayReady
Edge HTML5 MSE, HTML5 HLS MPEG-DASH, HLS PlayReady, AES HLS
Firefox HTML5 MSE MPEG-DASH Adobe
Safari HTML5 MSE, HTML5 HLS MPEG-DASH, HLS Fairplay, AES
Android: Web > v4.1 HTML5 MSE, HTML5 HLS MPEG-DASH, HLS Widevine Modular
Android: app Google’s Exoplayer MPEG-DASH, HLS Widevine Modular
iOS: web HTML5 HLS HLS AES
iOS: app native HLS support HLS Fairplay, AES
smart TV Native MPEG-DASH support or HTML5 MSE (e.g. Tizen) MPEG-DASH or HLS Device-dependent
HbbTV (1.5) native MPEG-DASH support MPEG-DASH device-dependent
我的tv module group:153
codec:編解碼器
視頻播放中的點播,廣播,組播(多播)
數字信號傳輸的數據流包含以下幾種:
ES流:基本碼流(elementary stream),包含視頻、音頻或者數據的連續碼流。
PES流:打包的基本碼流(packet elementary stream),將ES分包,再加上包頭。
TS流:傳輸流(transport stream)固定長度的包
PID:packet ID
PCR:program clock reference(system clock sample)
PSI:program specific information節目專用信息,由節目關聯表(PAT)、條件接受表(CAT)、節目映射表(PMT)和網絡信息表(NIT)組
成
CA卡:CMMB(China Mobile Multimedia Broadcasting)移動電視解密卡
EPG:電子節目指南(Electrical Program Guideline)
視頻播放原理:
解協議-》解封裝-》解碼-》同步-》播放
流媒體協議技術:
名稱 推出機構 傳輸層協議 客戶端 目前使用領域
RTSP+RTP IETF TCP+UDP VLC, WMP IPTV
RTMP Adobe Inc. TCP Flash 互聯網直播
RTMFP Adobe Inc. UDP Flash 互聯網直播
MMS Microsoft Inc. TCP/UDP WMP 互聯網直播+點播
HTTP WWW+IETF TCP Flash 互聯網點播
視頻封裝技術:
名稱 推出機構 流媒體 支持的視頻編碼 支持的音頻編碼 目前使用領域
AVI Microsoft Inc. 不支持 幾乎所有格式 幾乎所有格式 BT下載影視
MP4 MPEG 支持 MPEG-2, MPEG-4, H.264, H.263等 AAC, MPEG-1 Layers I, II, III, AC-3等 互聯網視頻網站
TS MPEG 支持 MPEG-1, MPEG-2, MPEG-4, H.264 MPEG-1 Layers I, II, III, AAC, IPTV,數字電視
FLV Adobe Inc. 支持 Sorenson, VP6, H.264 MP3, ADPCM, Linear PCM, AAC等 互聯網視頻網站
MKV CoreCodec Inc. 支持 幾乎所有格式 幾乎所有格式 互聯網視頻網站
RMVB Real Networks Inc. 支持 RealVideo 8, 9, 10 AAC, Cook Codec, RealAudio Lossless BT下載影視
視頻編碼技術:
名稱 推出機構 推出時間 目前使用領域
HEVC(H.265) MPEG/ITU-T 2013 研發中
H.264 MPEG/ITU-T 2003 各個領域
MPEG4 MPEG 2001 不溫不火
MPEG2 MPEG 1994 數字電視
VP9 Google 2013 研發中
VP8 Google 2008 不普及
VC-1 Microsoft Inc. 2006 微軟平臺
音頻編碼技術:
名稱 推出機構 推出時間 目前使用領域
AAC MPEG 1997 各個領域(新)
AC-3 Dolby Inc. 1992 電影
MP3 MPEG 1993 各個領域(舊)
WMA Microsoft Inc. 1999 微軟平臺
直播平臺使用技術:
名稱 協議 封裝 視頻編碼 音頻編碼 播放器
CNTV 私有
華數TV RTMP FLV H.264 AAC Flash
六間房 RTMP FLV H.264 AAC Flash
中國教育電視臺 RTMP FLV H.264 AAC Flash
北廣傳媒移動電視 RTMP FLV H.264 AAC Flash
上海IPTV RTSP+RTP TS H.264 MP2 機頂盒
點播平臺使用技術:
名稱 協議 封裝 視頻編碼 音頻編碼 播放器
CNTV HTTP MP4 H.264 AAC Flash
CNTV(部分) RTMP FLV H.264 AAC Flash
華數TV HTTP MP4 H.264 AAC Flash
優酷網 HTTP FLV H.264 AAC Flash
土豆網 HTTP F4V H.264 AAC Flash
56網 HTTP FLV H.264 AAC Flash
音悅臺 HTTP MP4 H.264 AAC Flash
樂視網 HTTP FLV H.264 AAC Flash
新浪視頻 HTTP FLV H.264 AAC Flash
webm:google提出的一種媒體文件格式,其實就是一種一MKV容器格式爲基礎的視頻封裝技術,封裝了VP8視頻軌道和ogg音頻軌道
blob:二進制大對象(binary large object),表示一個存儲二進制文件的容器,例如圖片或者聲音文件。
SPS:sequence parameter set
Porting an application program includes using the Linux standard compiler GCC and some associated tools.
移植應用程序涉及到使用Linux標準編譯器GCC和其他一些相關的工具。
ALSA是Advanced Linux Sound Architecture,高級Linux聲音架構
1、視頻信號格式:連續的圖像,圖像的個數以幀爲單位,每個圖像有排列的像素組成,每個像素有顏色的三基色取不同的分量構成。每個像
素的每個顏色分量用一個字節表示。一個像素由3個字節表示。
YUV格式:一個像素由一個亮度分量Y和兩個色度分量U/V表示,一般一個像素由1.5個像素表示。
2、H264協議定義了三種幀,完整編碼的幀叫I幀(關鍵幀),只包含差異部分編碼的幀叫P幀(前向預測編碼幀),參考前後的幀編碼的幀叫
B幀(雙向預測內插編碼幀)。
幀內壓縮算法:生產I幀的算法。
幀間壓縮算法:生產B幀和P幀的算法。
H264中圖像以序列爲單位進行組織,一個序列是一段圖像編碼後的數據流,以I幀開始,到下一個I幀結束。一個序列的第一個圖像叫做
IDR圖像(立即刷新圖像),IDR都是I幀圖像。
3、DTS:decoding time stamp,解碼時間戳
PTS:presentation time stamp,顯示時間戳
可以保持顯示時序解碼時序一致
STC:System Time Clock
PCR:Program Clock Reference
tts:text to speech
mime:Multipurpose Internet Mail Extensions
Port Layer 是位於操作系統 API 和應用程序之間的函數庫。在 Port Layer 內部,不同平臺擁有 Port Layer 的不同實現,在這些實現中
類型 網絡傳輸 質量 終端 視頻編碼技術 業務運營商 政策
IPTV 電信運營商的專用網絡 網絡帶寬和視頻質量有保證 非智能機頂盒+普通家庭電視 H.264視頻編碼技術 電信 可直播
DVB HFC(光纖和同軸電纜混合) 信號穩定,質量有保證 天線、非智能機頂盒等 數字編碼技術 各個衛視 可直播
OTT internet公網 需要一定的帶寬才保證質量 智能機頂盒+顯示器(電視、電腦、Pad、手機等) 支持多種視頻編解碼技術 牌照商 不能直播
使用了實際平臺的系統調用。而對外,Port Layer 提供了一套統一的 API,屏蔽了底層系統的差異,從而使得開發者既不必關心軟件究竟在
何種平臺上開發,也不用關心在何種平臺上運行。在當今的軟件世界裏,許多需要在不同平臺上開發、運行的軟件,比如 HTTP 服務器,數
據庫等等,都可能需要 Port Layer。比如 Apache Http Server,就使用了 APR(Apache Portable Runtime),使它在不同平臺上都可以運行。
qHD(quater High Definition):540P(960X540)
HD(High Definition):720P(1280X720)
FHD(Full High Definition):1080P (1920X1080)
QHD(Quad High Definition):1440P(2560X1440)
UHD(Ultra High Definition):2160P(3840X2160)