Video.js 是一个开源的 HTML5 视频播放器,支持多种视频格式和流媒体协议。m3u8 是一种用于 HTTP Live Streaming (HLS) 的播放列表文件格式,包含了一系列的媒体片段(TS 文件)及其元数据。
src
属性可以通过 JavaScript 动态更新 Video.js 播放器的 src
属性来加载新的 m3u8 文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Video.js Dynamic m3u8</title>
<link href="https://vjs.zencdn.net/7.14.3/video-js.css" rel="stylesheet" />
</head>
<body>
<video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264">
<source id="video-source" src="initial.m3u8" type="application/x-mpegURL" />
</video>
<script src="https://vjs.zencdn.net/7.14.3/video.min.js"></script>
<script>
var player = videojs('my-video');
function updatePlaylist(newUrl) {
document.getElementById('video-source').src = newUrl;
player.load();
player.play();
}
// 示例:动态更新播放列表
setTimeout(() => {
updatePlaylist('new_playlist.m3u8');
}, 5000); // 5秒后更新播放列表
</script>
</body>
</html>
Video.js 社区提供了许多插件来增强功能,例如 videojs-contrib-hls
插件可以更好地支持 HLS 播放。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Video.js Dynamic m3u8 with Plugin</title>
<link href="https://vjs.zencdn.net/7.14.3/video-js.css" rel="stylesheet" />
<script src="https://vjs.zencdn.net/7.14.3/video.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/videojs-contrib-hls@5.15.0/dist/videojs-contrib-hls.min.js"></script>
</head>
<body>
<video id="my-video" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264">
<source id="video-source" src="initial.m3u8" type="application/x-mpegURL" />
</video>
<script>
var player = videojs('my-video');
function updatePlaylist(newUrl) {
document.getElementById('video-source').src = newUrl;
player.load();
player.play();
}
// 示例:动态更新播放列表
setTimeout(() => {
updatePlaylist('new_playlist.m3u8');
}, 5000); // 5秒后更新播放列表
</script>
</body>
</html>
原因:可能是由于 Video.js 没有正确触发重新加载事件。
解决方法:使用 player.load()
和 player.play()
方法来确保视频重新加载和播放。
function updatePlaylist(newUrl) {
document.getElementById('video-source').src = newUrl;
player.load();
player.play();
}
原因:可能是由于网络延迟或服务器响应慢导致的。
解决方法:优化服务器性能,确保 m3u8 文件和媒体片段的快速加载。可以使用 CDN 来加速内容分发。
原因:可能是由于新的 m3u8 文件格式不正确或包含无效的媒体片段。
解决方法:检查新的 m3u8 文件格式是否正确,确保所有媒体片段可用且格式正确。
通过以上方法,你可以实现 Video.js 播放器的 m3u8 播放列表动态更新,并解决常见的播放问题。
领取专属 10元无门槛券
手把手带您无忧上云