You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HTML和JS实现HLS直播并添加直播状态标识

实现Fluid Player直播标识的解决方案

你使用的Fluid Player本身内置了直播标识支持,同时也支持自定义控件扩展,可根据需求选择以下方案:


方案一:使用内置直播配置(最简单)

Fluid Player 3.0+ 版本提供了原生的直播标识开关,只需要在初始化配置的layoutControls中新增isLive参数即可自动在控制栏显示直播标识,修改后的JS代码如下:

fluidPlayer(
        'hls-video',
        {
            layoutControls: {
                fillToContainer: false,
                autoPlay: true,
                title: 'My video title',
                // 开启直播标识
                isLive: true,
                // 可选:自定义标识文本,默认显示为 LIVE
                liveDisplayText: '直播'
            }
        }
    );

该方案不需要额外编写样式和DOM代码,标识会自动和播放器控制栏样式适配。


方案二:自定义直播标识(适合需要定制样式的场景)

如果内置标识的样式不符合设计需求,可以手动插入自定义DOM和样式实现:

第一步:新增直播标识样式

/* 直播标识容器 */
.live-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 999;
    background: #e74c3c;
    color: #fff;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 5px;
}
/* 直播闪烁红点效果 */
.live-badge::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #fff;
    animation: liveBlink 1.2s infinite ease-in-out;
}
@keyframes liveBlink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}

第二步:修改初始化JS代码插入标识

const player = fluidPlayer(
        'hls-video',
        {
            layoutControls: {
                fillToContainer: false,
                autoPlay: true,
                title: 'My video title',
            }
        }
    );
// 插入直播标识到播放器容器
const playerWrap = document.querySelector('.fluid-player');
playerWrap.style.position = 'relative';
const liveBadge = document.createElement('div');
liveBadge.className = 'live-badge';
liveBadge.innerText = '直播';
playerWrap.appendChild(liveBadge);

扩展:自动判断是否为直播流

如果需要根据HLS流的类型自动显示/隐藏直播标识,可以监听HLS实例的清单解析事件判断:

const player = fluidPlayer('hls-video', {
    layoutControls: {
        fillToContainer: false,
        autoPlay: true,
        title: 'My video title',
    }
});
// 监听HLS实例创建完成事件
player.on('hlsInstanceCreated', (hls) => {
    // 监听HLS清单解析完成事件
    hls.on(Hls.Events.MANIFEST_PARSED, () => {
        const isLiveStream = hls.levels[0]?.details?.live ?? false;
        if (isLiveStream) {
            // 动态开启内置直播标识
            player.setLayoutControls({
                isLive: true,
                liveDisplayText: '直播'
            })
        }
    })
})

内容的提问来源于stack exchange,提问作者Praveen Malviya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:15:00