Web端多路流媒体播放方案优化

问题背景

在Web客户端使用HTTP-FLV进行流媒体播放时,由于浏览器的限制,最多只能同时播放6路视频。然而,在部分实际应用场景中,可能需要在Web端播放超过6路的视频流。为了解决这个问题,可以采用WebSocket技术,流媒体服务器通过WebSocket-FLV或WebSocket-FMP4的方式进行数据推送,从而实现更高并发的视频播放。Web客户端只需调用对应的流地址,即可支持超过6路的音视频播放。

解决方案

WebSocket-FLV 播放器测试

可以参考以下在线播放器,直接添加WebSocket的地址即可播放:

👉 WebSocket-FLV 测试地址

WebSocket-FMP4 播放器下载

若需测试WebSocket-FMP4的播放,可下载对应的播放器:

🔗 WebSocket-FMP4 下载地址

HTTP-FLV 播放示例代码

以下是基于flv.js的HTTP-FLV播放示例,支持手动输入播放地址:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>HTTP-FLV 播放示例</title>
    <script src="js/flv.min.js"></script>
</head>
<body>
    <div class="mainContainer">
        <video id="videoElement" class="centeredVideo" controls autoplay width="1024" height="576">
            您的浏览器不支持 HTML5 视频播放。
        </video>
    </div>

    <script>
        function initPlayer(url) {
            let videoElement = document.getElementById('videoElement');
            if (flvjs.isSupported()) {
                let flvPlayer = flvjs.createPlayer({
                    type: 'flv',
                    hasAudio: false, // 不加这句可能会导致播放异常
                    isLive: true,
                    url: url
                });
                flvPlayer.attachMediaElement(videoElement);
                flvPlayer.load(); // 加载视频流
                setTimeout(() => flvPlayer.play(), 0); // 确保视频播放
            }
        }

        function setPlayUrl() {
            let playUrl = document.getElementById("videourl").value;
            initPlayer(playUrl);
        }

        // 默认加载示例视频流
        window.onload = () => {
            initPlayer('http://ip:port/appx/channelx.flv');
        };
    </script>

    <div>
        视频播放地址:
        <input id="videourl" type="text" style="width: 500px" value="http://ip:port/appx/channelx.flv">
        <input type="button" value="设置" onclick="setPlayUrl()">
    </div>
</body>
</html>

结论

默认HTTP-FLV播放受限:浏览器最多支持6路视频流。

WebSocket方案突破限制:使用WebSocket-FLV或WebSocket-FMP4可支持更多路数的视频播放。

flv.js 可用于HTTP-FLV播放:示例代码可用于测试流媒体播放,并支持动态修改播放地址。

通过上述优化方案,可以更好地满足多路视频流的播放需求,提高Web端流媒体播放的灵活性和扩展性。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐