分享Video.js观看Web视频流

界面效果

HTML结构

<div class="homePopup"  >
	<div class="search_box animate__animated animate__fadeInDown" 
	style="display: none;">
		<div class="van-search"  style="background: rgba(0, 0, 0, 0);">
			<!---->
			<div class="van-search__content van-search__content--square">
				<!---->
				<div class="van-cell van-cell--borderless van-field van-search__field">
					<div class="van-field__left-icon">
						<i class="van-badge__wrapper van-icon van-icon-search">
							<!---->
							<!---->
							<!---->
						</i>
					</div>
					<!---->
					<div class="van-cell__value van-cell__value--alone van-field__value">
						<div class="van-field__body">
							<input type="search" id="van-search-1-input" class="van-field__control"
							placeholder="请输入搜索关键词">
							<!---->
							<!---->
							<!---->
						</div>
						<!---->
						<!---->
					</div>
					<!---->
					<!---->
				</div>
			</div>
			<!---->
		</div>
		<!---->
	</div>
	<div class="selector animate__animated animate__fadeInLeft" 
	style="display: none;">
		<div class="darkChoices"  >
			<div >
				快速选择
			</div>
			<div >
				<div class="darkChoices_item"  style="display: none;">
					<div class="transition_tite" >
						全省路线
					</div>
					<div class="transition-box" >
						按路线查看
					</div>
					<div class="transition-box" >
						按城市查看
					</div>
				</div>
				<!---->
				<div class="search_info infoList2"  style="display: none;">
					<div class="infoList_item" >
						<div >
							成都
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							自贡
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							攀枝花
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							泸州
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							德阳
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							绵阳
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							广元
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							遂宁
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							内江
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							乐山
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							南充
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							眉山
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							宜宾
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							广安
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							达州
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							雅安
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							巴中
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							资阳
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							马尔康
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							康定
						</div>
					</div>
					<div class="infoList_item" >
						<div >
							西昌
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<div class="detail-box animate__animated animate__fadeInDown" >
		<div  style="">
			<div class="details" >
				<img class="details_img" src="https://etc.its-sc.com.cn/SiChuanGSTadmin/img/G4202.png"
				alt="" >
				<div class="details_box" >
					<p class="details_box_name" >
						G4202成都绕城高速
					</p>
					<p class="details_box_cameraname" >
						四川-G4202-成都绕城高速东段-路段K11+650内环门架球机
					</p>
				</div>
				<img class="detail-video-close" src="static/img/icon-cctv-close.67e2c9ea.svg"
				>
			</div>
			<div class="videoStrs" >
				<div style="width: 100%; height: 100%; object-fit: fill;" 
				data-setup="{}" type="video/m3u8" playsinline="true" webkit-playsinline="true"
				autoplay="true" class="video-js vjs-default-skin vjs-big-play-centered vjs-workinghover vjs-v7 videoElementCopy-dimensions vjs-controls-enabled vjs-has-started vjs-live vjs-playing vjs-user-inactive"
				id="videoElementCopy" tabindex="-1" role="region" lang="" translate="no"
				aria-label="Video Player">
					<video id="videoElementCopy_html5_api" class="vjs-tech" autoplay="" webkit-playsinline="true"
					playsinline="playsinline" type="video/m3u8" data-setup="{}" 
					style="width: 100%; height: 100%; object-fit: fill;" tabindex="-1" role="application"
					preload="auto" src="blob:https://etc.its-sc.com.cn/4a1891d9-3586-4b7d-9348-d8513243e93e">
						<source id="source" type="application/x-mpegURL"  src="https://vcsplay.its-sc.com.cn:8196/live/HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64.m3u8?auth_key=1708570297-0-0-f4e496cf613993c38edbdd0bb88a061d">
					</video>
					<div class="vjs-poster vjs-hidden" tabindex="-1" aria-disabled="false">
					</div>
					<div class="vjs-text-track-display" translate="yes" aria-live="off" aria-atomic="true">
						<div style="position: absolute; inset: 0px; margin: 1.5%;">
						</div>
					</div>
					<div class="vjs-loading-spinner" dir="ltr">
						<span class="vjs-control-text">
							Video Player is loading.
						</span>
					</div>
					<button class="vjs-big-play-button" type="button" title="Play Video" aria-disabled="false">
						<span class="vjs-icon-placeholder" aria-hidden="true">
						</span>
						<span class="vjs-control-text" aria-live="polite">
							Play Video
						</span>
					</button>
					<div class="vjs-control-bar" dir="ltr">
						<button class="vjs-play-control vjs-control vjs-button vjs-playing" type="button"
						title="Pause" aria-disabled="false">
							<span class="vjs-icon-placeholder" aria-hidden="true">
							</span>
							<span class="vjs-control-text" aria-live="polite">
								Pause
							</span>
						</button>
						<div class="vjs-volume-panel vjs-control vjs-volume-panel-horizontal">
							<button class="vjs-mute-control vjs-control vjs-button vjs-vol-3" type="button"
							title="Mute" aria-disabled="false">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Mute
								</span>
							</button>
							<div class="vjs-volume-control vjs-control vjs-volume-horizontal">
								<div tabindex="0" class="vjs-volume-bar vjs-slider-bar vjs-slider vjs-slider-horizontal"
								role="slider" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"
								aria-label="Volume Level" aria-live="polite" aria-valuetext="100%">
									<div class="vjs-mouse-display">
										<div class="vjs-volume-tooltip" aria-hidden="true">
										</div>
									</div>
									<div class="vjs-volume-level">
										<span class="vjs-control-text">
										</span>
									</div>
								</div>
							</div>
						</div>
						<div class="vjs-current-time vjs-time-control vjs-control">
							<span class="vjs-control-text" role="presentation">
								Current Time&nbsp;
							</span>
							<span class="vjs-current-time-display" aria-live="off" role="presentation">
								0:42
							</span>
						</div>
						<div class="vjs-time-control vjs-time-divider" aria-hidden="true">
							<div>
								<span>
									/
								</span>
							</div>
						</div>
						<div class="vjs-duration vjs-time-control vjs-control">
							<span class="vjs-control-text" role="presentation">
								Duration&nbsp;
							</span>
							<span class="vjs-duration-display" aria-live="off" role="presentation">
								-:-:-
							</span>
						</div>
						<div class="vjs-progress-control vjs-control">
							<div tabindex="0" class="vjs-progress-holder vjs-slider vjs-slider-horizontal"
							role="slider" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100"
							aria-label="Progress Bar" aria-valuetext="0:00:43 of -:-:-">
								<div class="vjs-load-progress" style="width: 0%;">
									<span class="vjs-control-text">
										<span>
											Loaded
										</span>
										:
										<span class="vjs-control-text-loaded-percentage">
											0.00%
										</span>
									</span>
									<div data-start="14" data-end="64" style="left: 21.88%; width: 78.13%;">
									</div>
								</div>
								<div class="vjs-mouse-display">
									<div class="vjs-time-tooltip" aria-hidden="true">
									</div>
								</div>
								<div class="vjs-play-progress vjs-slider-bar" aria-hidden="true" style="width: 0%;">
									<div class="vjs-time-tooltip" aria-hidden="true" style="right: 0px;">
										0:00:43
									</div>
								</div>
							</div>
						</div>
						<div class="vjs-live-control vjs-control">
							<div class="vjs-live-display" aria-live="off">
								<span class="vjs-control-text">
									Stream Type&nbsp;
								</span>
								LIVE
							</div>
						</div>
						<button class="vjs-seek-to-live-control vjs-control" type="button" title="Seek to live, currently behind live"
						aria-disabled="false">
							<span class="vjs-icon-placeholder" aria-hidden="true">
							</span>
							<span class="vjs-control-text" aria-live="polite">
								Seek to live, currently behind live
							</span>
							<span class="vjs-seek-to-live-text" aria-hidden="true">
								LIVE
							</span>
						</button>
						<div class="vjs-remaining-time vjs-time-control vjs-control">
							<span class="vjs-control-text" role="presentation">
								Remaining Time&nbsp;
							</span>
							<span aria-hidden="true">
								-
							</span>
							<span class="vjs-remaining-time-display" aria-live="off" role="presentation">
								-:-:-
							</span>
						</div>
						<div class="vjs-custom-control-spacer vjs-spacer ">
							&nbsp;
						</div>
						<div class="vjs-playback-rate vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden">
							<div class="vjs-playback-rate-value" id="vjs-playback-rate-value-label-videoElementCopy_component_254">
								1x
							</div>
							<button class="vjs-playback-rate vjs-menu-button vjs-menu-button-popup vjs-button"
							type="button" aria-disabled="false" title="Playback Rate" aria-haspopup="true"
							aria-expanded="false" aria-describedby="vjs-playback-rate-value-label-videoElementCopy_component_254">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Playback Rate
								</span>
							</button>
							<div class="vjs-menu">
								<ul class="vjs-menu-content">
								</ul>
							</div>
						</div>
						<div class="vjs-chapters-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden">
							<button class="vjs-chapters-button vjs-menu-button vjs-menu-button-popup vjs-button"
							type="button" aria-disabled="false" title="Chapters" aria-haspopup="true"
							aria-expanded="false">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Chapters
								</span>
							</button>
							<div class="vjs-menu">
								<ul class="vjs-menu-content">
									<li class="vjs-menu-title" tabindex="-1">
										Chapters
									</li>
								</ul>
							</div>
						</div>
						<div class="vjs-descriptions-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden">
							<button class="vjs-descriptions-button vjs-menu-button vjs-menu-button-popup vjs-button"
							type="button" aria-disabled="false" title="Descriptions" aria-haspopup="true"
							aria-expanded="false">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Descriptions
								</span>
							</button>
							<div class="vjs-menu">
								<ul class="vjs-menu-content">
									<li class="vjs-menu-item vjs-selected" tabindex="-1" role="menuitemradio"
									aria-disabled="false" aria-checked="true">
										<span class="vjs-menu-item-text">
											descriptions off
										</span>
										<span class="vjs-control-text" aria-live="polite">
											, selected
										</span>
									</li>
								</ul>
							</div>
						</div>
						<div class="vjs-subs-caps-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden">
							<button class="vjs-subs-caps-button vjs-menu-button vjs-menu-button-popup vjs-button"
							type="button" aria-disabled="false" title="Subtitles" aria-haspopup="true"
							aria-expanded="false">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Subtitles
								</span>
							</button>
							<div class="vjs-menu">
								<ul class="vjs-menu-content">
									<li class="vjs-menu-item vjs-texttrack-settings" tabindex="-1" role="menuitem"
									aria-disabled="false">
										<span class="vjs-menu-item-text">
											subtitles settings
										</span>
										<span class="vjs-control-text" aria-live="polite">
											, opens subtitles settings dialog
										</span>
									</li>
									<li class="vjs-menu-item vjs-selected" tabindex="-1" role="menuitemradio"
									aria-disabled="false" aria-checked="true">
										<span class="vjs-menu-item-text">
											subtitles off
										</span>
										<span class="vjs-control-text" aria-live="polite">
											, selected
										</span>
									</li>
								</ul>
							</div>
						</div>
						<div class="vjs-audio-button vjs-menu-button vjs-menu-button-popup vjs-control vjs-button vjs-hidden">
							<button class="vjs-audio-button vjs-menu-button vjs-menu-button-popup vjs-button"
							type="button" aria-disabled="false" title="Audio Track" aria-haspopup="true"
							aria-expanded="false">
								<span class="vjs-icon-placeholder" aria-hidden="true">
								</span>
								<span class="vjs-control-text" aria-live="polite">
									Audio Track
								</span>
							</button>
							<div class="vjs-menu">
								<ul class="vjs-menu-content">
									<li class="vjs-menu-item vjs-selected vjs-main-menu-item" tabindex="-1"
									role="menuitemradio" aria-disabled="false" aria-checked="true">
										<span class="vjs-menu-item-text">
											default
										</span>
										<span class="vjs-control-text" aria-live="polite">
											, selected
										</span>
									</li>
								</ul>
							</div>
						</div>
						<button class="vjs-picture-in-picture-control vjs-control vjs-button"
						type="button" title="Picture-in-Picture" aria-disabled="false">
							<span class="vjs-icon-placeholder" aria-hidden="true">
							</span>
							<span class="vjs-control-text" aria-live="polite">
								Picture-in-Picture
							</span>
						</button>
						<button class="vjs-fullscreen-control vjs-control vjs-button" type="button"
						title="Fullscreen" aria-disabled="false">
							<span class="vjs-icon-placeholder" aria-hidden="true">
							</span>
							<span class="vjs-control-text" aria-live="polite">
								Fullscreen
							</span>
						</button>
					</div>
					<div class="vjs-error-display vjs-modal-dialog vjs-hidden" tabindex="-1"
					aria-describedby="videoElementCopy_component_472_description" aria-hidden="true"
					aria-label="Modal Window" role="dialog">
						<p class="vjs-modal-dialog-description vjs-control-text" id="videoElementCopy_component_472_description">
							This is a modal window.
						</p>
						<div class="vjs-modal-dialog-content" role="document">
							视频播放失败
						</div>
					</div>
					<div class="vjs-modal-dialog vjs-hidden  vjs-text-track-settings" tabindex="-1"
					aria-describedby="videoElementCopy_component_478_description" aria-hidden="true"
					aria-label="Caption Settings Dialog" role="dialog">
						<p class="vjs-modal-dialog-description vjs-control-text" id="videoElementCopy_component_478_description">
							Beginning of dialog window. Escape will cancel and close the window.
						</p>
						<div class="vjs-modal-dialog-content" role="document">
							<div class="vjs-track-settings-colors">
								<fieldset class="vjs-fg-color vjs-track-setting">
									<legend id="captions-text-legend-videoElementCopy_component_478">
										Text
									</legend>
									<label id="captions-foreground-color-videoElementCopy_component_478" class="vjs-label">
										Color
									</label>
									<select aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478">
										<option id="captions-foreground-color-videoElementCopy_component_478-White"
										value="#FFF" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-White">
											White
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Black"
										value="#000" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Black">
											Black
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Red"
										value="#F00" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Red">
											Red
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Green"
										value="#0F0" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Green">
											Green
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Blue"
										value="#00F" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Blue">
											Blue
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Yellow"
										value="#FF0" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Yellow">
											Yellow
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Magenta"
										value="#F0F" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Magenta">
											Magenta
										</option>
										<option id="captions-foreground-color-videoElementCopy_component_478-Cyan"
										value="#0FF" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478 captions-foreground-color-videoElementCopy_component_478-Cyan">
											Cyan
										</option>
									</select>
									<span class="vjs-text-opacity vjs-opacity">
										<label id="captions-foreground-opacity-videoElementCopy_component_478"
										class="vjs-label">
											Transparency
										</label>
										<select aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-opacity-videoElementCopy_component_478">
											<option id="captions-foreground-opacity-videoElementCopy_component_478-Opaque"
											value="1" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-opacity-videoElementCopy_component_478 captions-foreground-opacity-videoElementCopy_component_478-Opaque">
												Opaque
											</option>
											<option id="captions-foreground-opacity-videoElementCopy_component_478-SemiTransparent"
											value="0.5" aria-labelledby="captions-text-legend-videoElementCopy_component_478 captions-foreground-opacity-videoElementCopy_component_478 captions-foreground-opacity-videoElementCopy_component_478-SemiTransparent">
												Semi-Transparent
											</option>
										</select>
									</span>
								</fieldset>
								<fieldset class="vjs-bg-color vjs-track-setting">
									<legend id="captions-background-videoElementCopy_component_478">
										Background
									</legend>
									<label id="captions-background-color-videoElementCopy_component_478" class="vjs-label">
										Color
									</label>
									<select aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478">
										<option id="captions-background-color-videoElementCopy_component_478-Black"
										value="#000" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Black">
											Black
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-White"
										value="#FFF" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-White">
											White
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Red"
										value="#F00" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Red">
											Red
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Green"
										value="#0F0" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Green">
											Green
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Blue"
										value="#00F" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Blue">
											Blue
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Yellow"
										value="#FF0" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Yellow">
											Yellow
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Magenta"
										value="#F0F" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Magenta">
											Magenta
										</option>
										<option id="captions-background-color-videoElementCopy_component_478-Cyan"
										value="#0FF" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478 captions-background-color-videoElementCopy_component_478-Cyan">
											Cyan
										</option>
									</select>
									<span class="vjs-bg-opacity vjs-opacity">
										<label id="captions-background-opacity-videoElementCopy_component_478"
										class="vjs-label">
											Transparency
										</label>
										<select aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478">
											<option id="captions-background-opacity-videoElementCopy_component_478-Opaque"
											value="1" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478-Opaque">
												Opaque
											</option>
											<option id="captions-background-opacity-videoElementCopy_component_478-SemiTransparent"
											value="0.5" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478-SemiTransparent">
												Semi-Transparent
											</option>
											<option id="captions-background-opacity-videoElementCopy_component_478-Transparent"
											value="0" aria-labelledby="captions-background-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478 captions-background-opacity-videoElementCopy_component_478-Transparent">
												Transparent
											</option>
										</select>
									</span>
								</fieldset>
								<fieldset class="vjs-window-color vjs-track-setting">
									<legend id="captions-window-videoElementCopy_component_478">
										Window
									</legend>
									<label id="captions-window-color-videoElementCopy_component_478" class="vjs-label">
										Color
									</label>
									<select aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478">
										<option id="captions-window-color-videoElementCopy_component_478-Black"
										value="#000" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Black">
											Black
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-White"
										value="#FFF" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-White">
											White
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Red"
										value="#F00" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Red">
											Red
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Green"
										value="#0F0" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Green">
											Green
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Blue"
										value="#00F" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Blue">
											Blue
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Yellow"
										value="#FF0" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Yellow">
											Yellow
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Magenta"
										value="#F0F" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Magenta">
											Magenta
										</option>
										<option id="captions-window-color-videoElementCopy_component_478-Cyan"
										value="#0FF" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478 captions-window-color-videoElementCopy_component_478-Cyan">
											Cyan
										</option>
									</select>
									<span class="vjs-window-opacity vjs-opacity">
										<label id="captions-window-opacity-videoElementCopy_component_478" class="vjs-label">
											Transparency
										</label>
										<select aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478">
											<option id="captions-window-opacity-videoElementCopy_component_478-Transparent"
											value="0" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478-Transparent">
												Transparent
											</option>
											<option id="captions-window-opacity-videoElementCopy_component_478-SemiTransparent"
											value="0.5" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478-SemiTransparent">
												Semi-Transparent
											</option>
											<option id="captions-window-opacity-videoElementCopy_component_478-Opaque"
											value="1" aria-labelledby="captions-window-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478 captions-window-opacity-videoElementCopy_component_478-Opaque">
												Opaque
											</option>
										</select>
									</span>
								</fieldset>
							</div>
							<div class="vjs-track-settings-font">
								<fieldset class="vjs-font-percent vjs-track-setting">
									<legend id="captions-font-size-videoElementCopy_component_478" class="">
										Font Size
									</legend>
									<select aria-labelledby="captions-font-size-videoElementCopy_component_478">
										<option id="captions-font-size-videoElementCopy_component_478-50" value="0.50"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-50">
											50%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-75" value="0.75"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-75">
											75%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-100" value="1.00"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-100">
											100%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-125" value="1.25"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-125">
											125%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-150" value="1.50"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-150">
											150%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-175" value="1.75"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-175">
											175%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-200" value="2.00"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-200">
											200%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-300" value="3.00"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-300">
											300%
										</option>
										<option id="captions-font-size-videoElementCopy_component_478-400" value="4.00"
										aria-labelledby="captions-font-size-videoElementCopy_component_478 captions-font-size-videoElementCopy_component_478-400">
											400%
										</option>
									</select>
								</fieldset>
								<fieldset class="vjs-edge-style vjs-track-setting">
									<legend id="videoElementCopy_component_478" class="">
										Text Edge Style
									</legend>
									<select aria-labelledby="videoElementCopy_component_478">
										<option id="videoElementCopy_component_478-None" value="none" aria-labelledby="videoElementCopy_component_478 videoElementCopy_component_478-None">
											None
										</option>
										<option id="videoElementCopy_component_478-Raised" value="raised" aria-labelledby="videoElementCopy_component_478 videoElementCopy_component_478-Raised">
											Raised
										</option>
										<option id="videoElementCopy_component_478-Depressed" value="depressed"
										aria-labelledby="videoElementCopy_component_478 videoElementCopy_component_478-Depressed">
											Depressed
										</option>
										<option id="videoElementCopy_component_478-Uniform" value="uniform" aria-labelledby="videoElementCopy_component_478 videoElementCopy_component_478-Uniform">
											Uniform
										</option>
										<option id="videoElementCopy_component_478-Dropshadow" value="dropshadow"
										aria-labelledby="videoElementCopy_component_478 videoElementCopy_component_478-Dropshadow">
											Dropshadow
										</option>
									</select>
								</fieldset>
								<fieldset class="vjs-font-family vjs-track-setting">
									<legend id="captions-font-family-videoElementCopy_component_478" class="">
										Font Family
									</legend>
									<select aria-labelledby="captions-font-family-videoElementCopy_component_478">
										<option id="captions-font-family-videoElementCopy_component_478-ProportionalSansSerif"
										value="proportionalSansSerif" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-ProportionalSansSerif">
											Proportional Sans-Serif
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-MonospaceSansSerif"
										value="monospaceSansSerif" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-MonospaceSansSerif">
											Monospace Sans-Serif
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-ProportionalSerif"
										value="proportionalSerif" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-ProportionalSerif">
											Proportional Serif
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-MonospaceSerif"
										value="monospaceSerif" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-MonospaceSerif">
											Monospace Serif
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-Casual"
										value="casual" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-Casual">
											Casual
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-Script"
										value="script" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-Script">
											Script
										</option>
										<option id="captions-font-family-videoElementCopy_component_478-SmallCaps"
										value="small-caps" aria-labelledby="captions-font-family-videoElementCopy_component_478 captions-font-family-videoElementCopy_component_478-SmallCaps">
											Small Caps
										</option>
									</select>
								</fieldset>
							</div>
							<div class="vjs-track-settings-controls">
								<button type="button" class="vjs-default-button" title="restore all settings to the default values">
									Reset
									<span class="vjs-control-text">
										restore all settings to the default values
									</span>
								</button>
								<button type="button" class="vjs-done-button">
									Done
								</button>
							</div>
						</div>
						<button class="vjs-close-button vjs-control vjs-button" type="button"
						title="Close Modal Dialog" aria-disabled="false">
							<span class="vjs-icon-placeholder" aria-hidden="true">
							</span>
							<span class="vjs-control-text" aria-live="polite">
								Close Modal Dialog
							</span>
						</button>
						<p class="vjs-control-text">
							End of dialog window.
						</p>
					</div>
				</div>
			</div>
			<div class="food" >
				<div class="onViewBy" >
					<span >
						显示视频列表
					</span>
				</div>
				<div class="switchs" >
					<div role="switch" class="van-switch van-switch--on" tabindex="0" aria-checked="true"
					 style="font-size: 0.65rem;">
						<div class="van-switch__node">
							<!---->
						</div>
					</div>
					<div class="switch_on" >
						<div class="hdmi"  style="">
							高清
						</div>
						<div class="flv"  style="display: none;">
							标清
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<!---->
	<!---->
	<!---->
	<!---->
	<!---->
</div>

视频服务请求

Request URL:

https://vcsplay.its-sc.com.cn/api/video.GetCameraPlayURL?cameraNum=6a1906a5-b550-44fd-b0fa-afa2e7077c6d&videoType=0

Request:

  1. cameraNum:6a1906a5-b550-44fd-b0fa-afa2e7077c6d

  2. videoType:0

Request Method:GET

Status Code:200 OK

Response:

{
    "code": 200,
    "msg": "OK",
    "url": "https://vcsplay.its-sc.com.cn:8182/live/6a1906a5-b550-44fd-b0fa-afa2e7077c6d.m3u8?auth_key=1708570164-0-0-f1763ed2c66ea60f6c14427b52dae381"
}


Video.js - HTML5 Video Player
Version 3.2.0

<video 
    id="videoElementCopy_html5_api" 
    class="vjs-tech" 
    autoplay="" webkit-playsinline="true"
    playsinline="playsinline" type="video/m3u8" 
    data-setup="{}"   
    style="width: 100%; height: 100%; object-fit: fill;"
    tabindex="-1" role="application" preload="auto" 
    src="blob:https://etc.its-sc.com.cn/4a1891d9-3586-4b7d-9348-d8513243e93e">
    <source 
        id="source" 
        type="application/x-mpegURL"   
        src="https://vcsplay.its-sc.com.cn:8182/live/6a1906a5-b550-44fd-b0fa-afa2e7077c6d.m3u8?auth_key=1708570164-0-0-f1763ed2c66ea60f6c14427b52dae381">
</video>

Request URL:

https://vcsplay.its-sc.com.cn:8196/live/HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64.m3u8?auth_key=1708570297-0-0-f4e496cf613993c38edbdd0bb88a061d

Request Method:GET

Status Code:200 OK

Remote Address:47.108.232.133:8196

Response:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:3514
#EXT-X-TARGETDURATION:5
#EXT-X-DISCONTINUITY
#EXTINF:3.960, no desc
HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64-3514.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.960, no desc
HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64-3515.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.960, no desc
HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64-3516.ts

https://vcsplay.its-sc.com.cn:8196/live/HD_fe4d52ce-e45d-479c-9909-86dc3c1a5a64-3399.ts

参见:

Video.js - Make your player yours | Video.js

https://vjs.zencdn.net/c/video.js

Video.js API docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/401556.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】Docker consul的容器服务更新与发现

目录 什么是服务注册与发现 什么是consul consul提供的一些关键特性&#xff1a; consul 部署 consul服务器 1. 建立 Consul 服务 设置代理&#xff0c;在后台启动 consul 服务端 2. 查看集群信息 查看members状态 查看集群状态 3. 通过 http api 获取集群信息 regi…

SpringBoot指定外部环境配置

nohup java -Xms256m -Xmx512m -Dfile.encodingUTF-8 -jar /usr/local/xxxx.jar --spring.profiles.activeprod > system.log 2>&1 & --spring.profiles.activeprod修改的是多环境配置中内部application.properties里的spring.profiles.active值 -Dspring.config…

新手初期交易是盈利的,等熟练了却开始亏损了?

许多个人投资者涌入市场&#xff0c;初衷是期望能实现暴利并创造奇迹。梦想是美好的&#xff0c;追求暴利也无可非议&#xff0c;但最担心的是一开始就设定了不切实际的目标。例如&#xff0c;他们可能认为&#xff0c;若一年内不能赚取五倍或十倍的收益&#xff0c;就等于失败…

【AI大语言模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Android13 编译ninja failed with: exit status 137

描述 现象很奇怪&#xff0c;主机是ubuntu 18.04&#xff0c; 内存有32G&#xff0c;并且系统中有两份Android13代码&#xff0c; 有一份编译正常&#xff0c;另外一份编译不正常&#xff0c;一度以为是因为下载源码不齐全导致&#xff0c;后面仔细看日志&#xff0c;原来是内…

同步系统时间chrony

安装 yum install chrony 启动并启用chronyd服务&#xff1a; systemctl start chronyd systemctl enable chronyd 查看chrony的状态&#xff0c;确认是否已经与NTP服务器同步 chronyc tracking

ElasticSearch DSL查询、排序 、分页的原理及语法

1. DSL查询分类和基本语法 ElasticSearch提供了基于Json的DSL来定义查询&#xff0c;常见的查询类型包括&#xff1a; • 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用&#xff0c;一般不是查出所有&#xff0c;一次性查询20条。例如 match_all • 全文检索(ful…

RMAN备份与恢复

文章目录 一、RMAN介绍二、全量备份三、增量备份0级备份1级增量备份累积性差量备份总结 四、压缩备份压缩备份介绍压缩备份操作压缩备份优缺点 五、异常恢复1、恢复前的准备2、恢复数据库 六、RMAN相关参数 一、RMAN介绍 RMAN&#xff08;Recovery Manager&#xff09;是Oracl…

Oracle:一条SQL在Oracle中的执行过程流程

一条SQL在Oracle中执行过程流程如下图&#xff1a;

QT-Day1

思维导图 作业 自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口this->setWindowTitle("QQ");this->setWindowIcon(QIcon("D:\\study\\hqyj\\co…

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时&#xff0c;无人机始终处于画面中央&#xff0c;会带着视角乱晃&#xff0c;在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…

【JavaEE】_ajax构造HTTP请求

目录 1. ajax简述 2. ajax构造HTTP请求 2.1 jquery库的引入 2.2 ajax构造HTTP请求格式 3. ajax构造GET请求实例 4. ajax构造POST请求实例 本专栏关于form表单构造HTTP请求一文中已经提到&#xff1a;form表单构造法只支持GET和POST&#xff0c;且会触发页面跳转。 原文详…

线上线下同时开店管理混乱?EasyBoss ERP升级线下零售订单功能帮你轻松搞定

许多做东南亚本土电商的卖家&#xff0c;会将线下店铺作为业绩增长的一个重要渠道&#xff0c;但是在运营过程中会出现&#xff1a;需要使用多个系统、库存不同步、数据混乱等问题&#xff0c;为了帮助卖家解决这些问题&#xff0c;EasyBoss此前已开发线下零售订单功能&#xf…

【Linux】再谈进程地址空间

目录 一、引入 二、物理内存和外设空间的交互 三、解决页表过大问题 一、引入 我们在往期的博客中有讲解过进程地址空间&#xff1a;【Linux】进程地址空间 但是在上述博客中我们只是对进程地址空间的左边部分详细进行了讲解&#xff0c;下面我们就来谈谈右边的部分&#…

支付功能设计及实现思路

支付功能设计 主要包括&#xff1a;订单表&#xff0c;订单日志表&#xff0c;订单队列&#xff0c;定时任务。 主要考虑&#xff1a;事务性、幂等性、安全性。 表结构设计 订单表&#xff1a; 订单表&#xff0c;最主要的就是订单号、支付状态。 CREATE TABLE t_order (…

十大基础排序算法

排序算法分类 排序&#xff1a;将一组对象按照某种逻辑顺序重新排列的过程。 按照待排序数据的规模分为&#xff1a; 内部排序&#xff1a;数据量不大&#xff0c;全部存在内存中&#xff1b;外部排序&#xff1a;数据量很大&#xff0c;无法一次性全部存在内存中&#xff0c;…

Backtrader 文档学习- 整体架构功能分析理解

Backtrader 文档学习- 架构功能分析理解 1. 概述 backtrader是一个用于开发和执行交易策略的Python框架。它提供了一套完整的工具和功能&#xff0c;使得用户可以方便地进行策略回测、实盘交易以及数据分析。 backtrader的入口为Cerebro类&#xff0c;该类将所有输入(Data F…

基于Jenkins实现的CI/CD方案

基于Jenkins实现的CI/CD方案 前言 最近基于Jenkins的基座&#xff0c;搭建了一套适用于我们项目小组的持续集成环境。现在把流程整理分享出来&#xff0c;希望可以给大家提供一些帮助和思路。 使用到的组件和版本 组件名称组件版本作用Harbor2.7.3镜像仓库Jenkins2.319.2持…

C++ Primer 笔记(总结,摘要,概括)——第5章 语句

目录 5.1 简单语句 5.2 语句作用域 5.3 条件语句 5.3.1 if语句 5.3.2 switch语句 5.4 迭代语句 5.4.1 while语句 5.4.2 传统的for语句 5.4.3 范围for语句 5.4.4 do while语句 5.5 跳转语句 5.5.1 break语句 5.5.2 continue语句 5.5.3 goto语句 5.6 try语句块和异常处理 5…

http和https的区别(简述)

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HTTP Secure&#xff09;都是用于在客户端和服务器之间传输数据的协议&#xff0c;但它们在安全性方面有重要的区别。 1.HTTP: 概述&#xff1a; HTTP是一种用于传输超文本的协议&#xff08;超文…