因爲項目須要接入視頻監控,因此先行了解了一些這方面的知識。雖然經過谷歌老師找到了許多教程,但在本身實踐的過程當中仍是不免有一些坎坷。這裏作一下簡單的記錄。因爲視頻監控平臺可能沒法直接提供rtmp或hls協議的視頻流,因此後期可能還會涉及到使用ffmpeg拉流、轉換視頻流再推流的工做。javascript
項目地址:nginx-rtmp-module,認真看下readme.md
就能大體瞭解使用方式;詳細的安裝步驟能夠參考國外這位老哥的文章:How to Install Nginx with RTMP Module on CentOS 7 css
copy from open.hikvision.com/docs/37e388…html
協議名稱 | 詳細介紹 |
---|---|
RTSP | 實時串流協議(Real Time Streaming Protocol,RTSP)是一種網絡應用協議,專爲娛樂和通訊系統的使用,以控制流媒體 服務器。該協議用於創建和控制終端之間的媒體會話。媒體服務器的客戶端發佈VCR命令,例如播放,錄製和暫停,以便於實時控制從服務器到客戶端(視頻點播)或從客戶端到服務器(語音錄音)的媒體流。 |
RTMP | 實時消息協議(英語:Real-Time Messaging Protocol,縮寫RTMP)也稱實時消息傳輸協議,是最初由Macromedia爲經過互聯網在Flash播放器與一個服務器之間傳輸流媒體音頻、視頻和數據而開發的一個專有協議。 |
HLS | HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基於HTTP的流媒體網絡傳輸協議。 |
RTP | 實時傳輸協議(Real-time Transport Protocol或簡寫RTP)是一個網絡傳輸協議,它是由IETF的多媒體傳輸工做小組1996年在RFC 1889中公佈的。 |
rtmp {
server {
listen 1935;
chunk_size 4096;
# rmtp 協議播放
application myapp {
live on;
}
# hls協議播放
application show {
live on;
hls on;
hls_path /data/hls/; # 視頻文件存放位置
hls_fragment 5s;
hls_playlist_length 60;
deny play all;
}
}
}
http {
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log /var/log/nginx/host.access.log main;
# 查看stat
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
# stat.xsl 文件要從nginx-rtmp-module源碼目錄中cp到html目錄下面
location /stat.xsl {
root html;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /data;# 與上面hls配置的root要對應,否則視頻文件就404了
add_header Cache-Control no-cache;
}
}
複製代碼
前端是基於videojs實現的視頻播放;7.0以前的版本彷佛是不支持hls協議播放的,因此在7.0以前是另一個工具:videojs-contrib-hls前端
demo.htmljava
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>video</title>
<link rel="stylesheet" href="https://vjs.zencdn.net/7.0.0/video-js.css">
<script src="https://vjs.zencdn.net/7.0.0/video.min.js"></script>
</head>
<body>
<video id="test_video" controls preload="none" width="640" height="480" class="video-js vjs-big-play-centered vjs-fluid " poster="http://video-js.zencoder.com/oceans-clip.png" data-setup="{}">
<source src="http://119.3.193.218/hls/test.m3u8" type='application/vnd.apple.mpegurl' />
</video>
<script type="text/javascript"> var myPlayer = videojs('test_video'); // video 標籤中的ID myPlayer.ready(function(){ myPlayer.play(); }); </script>
</body>
</html>
複製代碼
demo.html
在測試的時候是做爲本地文件打開存在跨域的問題致使一直沒有播放成功,上傳到服務器後得以解決。