jessibuca
Version:
a h5 live stream player
188 lines (166 loc) • 3.48 kB
CSS
.hls-player {
position: relative;
width: 100%;
background: #000;
border-radius: 8px;
overflow: hidden;
}
.hls-player-video {
width: 100%;
display: block;
background: #000;
}
.hls-player-controls {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(to top, rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.7) 60%, transparent);
padding: 16px;
display: flex;
align-items: center;
gap: 16px;
transition: opacity 0.3s;
opacity: 0;
}
.hls-player:hover .hls-player-controls {
opacity: 1;
}
.hls-player-controls button {
background: transparent;
border: none;
color: #fff;
padding: 8px 12px;
border-radius: 4px;
cursor: pointer;
font-size: 13px;
transition: all 0.2s;
min-width: 40px;
display: flex;
align-items: center;
justify-content: center;
}
.hls-player-controls button:hover {
background: rgba(255, 255, 255, 0.1);
}
.hls-player-controls button.rate-active {
background: #18a058;
color: #fff;
}
.hls-player-rate {
display: flex;
gap: 4px;
margin-left: auto;
background: rgba(0, 0, 0, 0.5);
padding: 4px;
border-radius: 4px;
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
/* Timeline styles */
.hls-player .timeline-container {
flex: 1;
margin: 0 8px;
height: 20px;
display: flex;
align-items: center;
}
.hls-player .canvas-wrapper {
width: 100%;
background: rgba(255, 255, 255, 0.1);
border-radius: 4px;
height: 4px ;
transition: all 0.2s;
overflow: hidden;
}
.hls-player-controls:hover .canvas-wrapper {
height: 8px ;
background: rgba(255, 255, 255, 0.15);
}
/* Play/Pause button */
.hls-player-controls button:first-child {
background: rgba(255, 255, 255, 0.1);
border: none;
color: #fff;
width: 36px;
height: 36px;
border-radius: 50%;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s;
padding: 0;
min-width: 36px;
font-size: 13px;
}
.hls-player-controls button:first-child:hover {
background: rgba(255, 255, 255, 0.2);
transform: scale(1.05);
}
/* Playback rate buttons */
.hls-player-rate button {
background: transparent;
border: none;
color: rgba(255, 255, 255, 0.7);
padding: 4px 8px;
border-radius: 4px;
cursor: pointer;
font-size: 12px;
transition: all 0.2s;
min-width: 36px;
}
.hls-player-rate button:hover {
background: rgba(255, 255, 255, 0.1);
color: #fff;
}
.hls-player-rate button.rate-active {
background: #18a058;
color: #fff;
}
.hls-player-debug {
margin-top: 16px;
padding: 16px;
border: 1px solid #eee;
border-radius: 4px;
background: #fff;
}
.debug-timeline-container {
margin-bottom: 16px;
}
.debug-label {
font-size: 12px;
color: #666;
margin-bottom: 4px;
}
.debug-canvas-wrapper {
position: relative;
height: 24px;
width: 100%;
background: #f5f5f5;
border-radius: 2px;
overflow: hidden;
}
.debug-canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
/* Tooltip style */
.hls-player .timeline-tooltip {
background: rgba(0, 0, 0, 0.9);
color: #fff;
padding: 6px 10px;
border-radius: 4px;
font-size: 12px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.timeline-tooltip::after {
border-top-color: rgba(0, 0, 0, 0.9);
}