如何使用視頻流媒體服務器支持HTML5直播?


視頻直播這么火,再不學就out了!為了緊跟潮流,本文我也將向大家介紹一下視頻直播中的基本流程和主要的技術點,包括但僅不限於前端技術。

H5 到底能不能做視頻直播?

當然可以了,H5火了這么久,涵蓋了各個方面的技術,我們的流媒體服務器就可以支持H5的直播。

對於視頻錄制,可以使用強大的 WebRTC(Web Real-Time Communication)是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,缺點是只在PC的chrome上支持較好,移動端支持不太理想。

簡單的推流服務器搭建,由於我們上傳的視頻流都是基於rtmp協議的,所以服務器也必須要支持 rtmp才行,大概需要以下幾個步驟:

1 安裝一台 nginx 服務器。

2 安裝 nginx 的 rtmp 擴展,目前使用比較多的是https://github.com/arut/nginx-rtmp-module。

3 配置 nginx 的 conf 文件:

 rtmp {  

     server {  

         listen 1935;  #監聽的端口

         chunk_size 4000;  


         application hls {  #rtmp推流請求路徑
             live on;  
             hls on;  
             hls_path /usr/local/var/www/hls;  
             hls_fragment 5s;  
         }  
     }  
 }  

4 重啟 nginx,將 rtmp 的推流地址寫為 rtmp://ip:1935/hls/mystream,其中 hls_path 表示生成的 .m3u8 和 ts 文件所存放的地址,hls_fragment 表示切片時長,mysteam 表示一個實例,即將來要生成的文件名可以先自己隨便設置一個。更多配置可以參考:https://github.com/arut/nginx-rtmp-module/wiki/

根據以上步驟基本上已經實現了一個支持 rtmp 的視頻服務器了。

對於視頻播放,可以使用 HLS(HTTP Live Streaming)協議播放直播流,iOS 和 Android 都天然支持這種協議,配置簡單,直接使用 video 標簽即可。

簡單來說,直接使用 video 標簽即可播放 hls 協議的直播視頻:

 <video autoplay webkit-playsinline>  
     <source src="http://10.66.69.77:8080/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" />  
     <p class="warning">Your browser does not support HTML5 video.</p>  
 </video> 

需要注意的是,給 video 標簽增加 webkit-playsinline 屬性,這個屬性是為了讓 video 視頻在 ios 的 uiwebview 里面可以不全屏播放,默認 ios 會全屏播放視頻,需要給 uiwebview 設置 allowsInlineMediaPlayback=YES。業界比較成熟的videojs可以根據不同平台選擇不同的策略,例如 iOS 使用 video 標簽,pc 使用 flash 等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM