HLS (HTTP Live Streaming)是Apple的動態(tài)碼率自適應(yīng)技術(shù)。主要用于PC和Apple終端的音視頻服務(wù)。包括一個m3u(8)的索引文件,TS媒體分片文件和key加密串文件。
成都創(chuàng)新互聯(lián)公司專注于大寧企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。大寧網(wǎng)站建設(shè)公司,為大寧等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
常用的流媒體協(xié)議主要有HTTP漸進(jìn)下載和基于RTSP/RTP的實時流媒體協(xié)議,這二種基本是完全不同的東西,目前比較方便又好用的是用HTTP漸進(jìn)下載方法。在這個中apple公司的HTTP Live Streaming是這個方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設(shè)備而開發(fā)的流.現(xiàn)在見到在桌面也有很多應(yīng)用了,HTML5是直接支持這個。
但是HLS協(xié)議的小切片方式會生成大量的文件,存儲或處理這些文件會造成大量資源浪費(fèi)。如果要實現(xiàn)數(shù)天的時移,索引量將會是個巨額數(shù)字,并明顯影響請求速度。因此,HLS協(xié)議對存儲I/O要求相當(dāng)苛刻。對此,也有公司提出了非常好的解決方案。
其他:
新型點播服務(wù)器系統(tǒng),獨(dú)創(chuàng)了內(nèi)存緩存數(shù)據(jù)實時切片技術(shù),顛覆了這種傳統(tǒng)實現(xiàn)方法,從根本上解決了大量切片的碎片問題,使得單臺服務(wù)器的切片與打包能力不再是瓶頸。其基本原理如下:
不將TS切片文件存到磁盤,而是存在內(nèi)存當(dāng)中,這種技術(shù)使得服務(wù)器的磁盤上面不再會有“數(shù)以噸計”的文件碎片,極大減少了磁盤的I/O次數(shù),延長了服務(wù)器磁盤的使用壽命,極大提高了服務(wù)器運(yùn)行的穩(wěn)定性。同時,由于使用這種技術(shù),使得終端請求數(shù)據(jù)時直接從服務(wù)器的內(nèi)存中獲取,極大提高了對終端數(shù)據(jù)請求的反應(yīng)速度,優(yōu)化了視頻觀看體驗。
M3U8是蘋果專用的“視頻格式”。M3U8視頻只能蘋果設(shè)備訪問,即蘋果設(shè)備才能解碼此類視頻。目前沒有這樣的播放器,需要用格式工廠轉(zhuǎn)換。
用“格式工廠”軟件可以把m3u8格式文件轉(zhuǎn)換為avi格式文件。
操作為:
第一步:電腦上百度搜索“格式工廠”軟件下載,安裝完畢后打開。
第二步:點擊“視頻”,選擇“mp4”。如圖:
功能模塊概述
通過obs客戶端推流到nginx流媒體服務(wù)器上,對流媒體用ffmpeg將流剪切為若干段ts流文件并保存到臨時目錄中,通過訪問m3u8格式拼接ts流文件段來觀看直播。
推流端
采用開源工具OBS客戶端進(jìn)行推流
根據(jù)項目的推流地址,填入OBS客戶端(下載地址)中,并設(shè)置場景,保存后重啟,便可開始推流。
為更加穩(wěn)定的推流,建議使用以上鏈接中的v0.625穩(wěn)定版本,按提示安裝完成后,打開設(shè)定.在廣播設(shè)定中,伺服器統(tǒng)一填寫我們項目的流媒體接收流地址:
rtmp://127.0.0.1:1935/hls/
以上這幾個數(shù)據(jù)都是可以更改的。
127.0.0.1——你的流媒體服務(wù)器ip
1935——你的rtmp端口號
hls——你的直播nginx配置模塊
具體在下文中也有詳細(xì)介紹
配置地址
回到主界面,右鍵來源,選擇添加視頻捕捉設(shè)備或獲取窗口等(相關(guān)設(shè)置默認(rèn)即可),點擊開始串流,便可開始直播。
添加場景
圖為添加視頻捕捉設(shè)備后的直播畫面:
直播中
流媒體服務(wù)器
Nginx接收推流模塊
rtmp_auto_push on;
rtmp {
server {
listen 1935;
application hls {
live on;
hls on;
hls_path /tmp/hls;
on_publish 項目地址/liveOnPublish;
on_publish_done 項目地址/liveOnDone;
notify_method get;
}
}
}
配上我在word上的注解
注解1
Nginx處理直播流模塊
http {
server {
listen 80;
server_name localhost;
location /hls {
secure_link $arg_st,$arg_e;
secure_link_md5 key$arg_e;
subs_filter .ts '.ts?st=$arg_ste=$arg_eclentip=$remote_addr';
subs_filter_types application/vnd.apple.mpegurl;
if ($secure_link = "") {
return 402;
}
if ($secure_link = "0") {
return 403;
}
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
}
注解2
項目部署服務(wù)器
流媒體服務(wù)器不通過項目服務(wù)器,整個直播過程的推流和處理流都在流媒體服務(wù)器上進(jìn)行。項目服務(wù)器主要進(jìn)行直播地址加密處理意見推流開始和結(jié)束觸發(fā)的方法(liveOnPublish(),liveOnDone())已及對直播地址加密.
播放端
直接通過HTML5中的video標(biāo)簽設(shè)置src來播放直播流。如:
video src="pro/live.m3u8?st=UM/L8jdfTlY2b1j1F6XSxA==e=1468548530
" controls="controls"/video
存在的問題
延遲待測試(不科學(xué)的數(shù)據(jù)是安卓手機(jī)普遍在30-40s,蘋果手機(jī)在20-30s)
并發(fā)待測試
掉幀待測試(網(wǎng)速影響大,網(wǎng)絡(luò)好幾乎不掉幀,網(wǎng)絡(luò)差掉一半,用戶體驗差)
H5edu教育HTML5開發(fā)解答:關(guān)于HTML5對視頻的支持,主要體現(xiàn)在視頻標(biāo)簽video上,video標(biāo)簽支持HLS、MP4等格式,這個要看不同瀏覽器的支持。HTML5對直播支持,可以采用HLS。具體到rtsp,HTML5是不能原生支持播放,但是可以嵌入vlc播放器進(jìn)行播放。
我也遇到這個問題,據(jù)說使用方法其他串一樣,把m3u8串傳入src就行了。我親測過了,在電腦上不行,在手機(jī)上可以。電腦是Chrome、safari、Mozilla的,手機(jī)是歐朋瀏覽器。之前我是用vlc插件的?,F(xiàn)在Google都不支持NPAPI了。也用不了了??梢栽囋噑ewiseplayer,雖然是flash的但是開源的,里面都有例子,只要解決跨域問題,也是很好用的。