|
|
@ -1870,27 +1870,23 @@ public class HikNvrLiveStreamService { |
|
|
return "camera-" + cameraCode.trim().replaceAll("[^A-Za-z0-9_-]", "_"); |
|
|
return "camera-" + cameraCode.trim().replaceAll("[^A-Za-z0-9_-]", "_"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** 返回当前流的 HLS 浏览器地址。 */ |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 返回当前流的 HLS 浏览器地址。 |
|
|
|
|
|
* |
|
|
|
|
|
* <p>只返回相对路径:页面会按现场约定对与本页面同源的 /live/ 地址改写媒体端口; |
|
|
|
|
|
* 网关代理部署下按请求 Host 拼绝对地址会把流指向网关机器,浏览器无法拉流。</p> |
|
|
|
|
|
*/ |
|
|
private String hlsUrl(String streamId, String baseUrl) { |
|
|
private String hlsUrl(String streamId, String baseUrl) { |
|
|
return absoluteMediaUrl(baseUrl, "/live/" + streamId + "/hls.m3u8"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** 返回当前流的 HTTP-FLV 浏览器地址。 */ |
|
|
|
|
|
private String flvUrl(String streamId, String baseUrl) { |
|
|
|
|
|
return absoluteMediaUrl(baseUrl, "/live/" + streamId + ".live.flv"); |
|
|
|
|
|
|
|
|
return "/live/" + streamId + "/hls.m3u8"; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 拼接浏览器可达的绝对媒体地址。 |
|
|
|
|
|
|
|
|
* 返回当前流的 HTTP-FLV 浏览器地址。 |
|
|
* |
|
|
* |
|
|
* <p>页面会对"与本页面同源且以 /live/ 开头"的相对地址强制改写媒体端口(现场约定), |
|
|
|
|
|
* 因此只要解析出了基础地址就必须返回绝对地址;仅在完全无基础地址时保留相对路径。</p> |
|
|
|
|
|
|
|
|
* <p>只返回相对路径,原因同 {@link #hlsUrl}。</p> |
|
|
*/ |
|
|
*/ |
|
|
private String absoluteMediaUrl(String baseUrl, String path) { |
|
|
|
|
|
if (!hasText(baseUrl)) { |
|
|
|
|
|
return path; |
|
|
|
|
|
} |
|
|
|
|
|
return trimTrailingSlash(baseUrl.trim()) + path; |
|
|
|
|
|
|
|
|
private String flvUrl(String streamId, String baseUrl) { |
|
|
|
|
|
return "/live/" + streamId + ".live.flv"; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|