使用videojs,安卓可以正常播放视频,ios浏览器报错The media could not be loaded,either because the server or network ...

写在开头

video标签在各个浏览器中表现各异,存在很多兼容性问题,所以我尝试使用了videojs这个框架
传送门:videojs起步
传送门:videojs文档

直入主题

问题:按照videojs文档添加视频后,发现安卓可以正常播放视频,但是ios浏览器报错:The media could not be loaded,either because the server or network failed or because the format is not supported(无法加载媒体,原因可能是服务器或网络出现故障,或者不支持该格式)。

找出问题:安卓可以播放,说明网络没有问题;我刚开始怀疑是视频太大了,用了更小的视频发现还是无法加载。之后我尝试使用了m端详情页视频文件(因为详情页视频文件ios可以正常播放),发现也可以正常加载,于是我对比了两个视频文件的差异(见下图,左边为无法播放视频,右边为可以正常播放视频)。

视频文件对比
解决问题:至此可见,视频差异为帧宽高。由于高度是自适应。所以我使用pr,对原视频进行了处理,将帧宽也改为750(只需使用pr导出视频时设置一下视频宽度,高度会根据宽高比例对应生成),将处理好的视频文件重新上传到服务器后,发现可以正常播放,问题解决。

pr软件百度云资源:

链接:https://pan.baidu.com/s/1MjYGlSBgQ95hqkMdmvwT8Q
提取码:uaku
复制这段内容后打开百度网盘手机App,操作更方便哦

注意:这是m端才有的问题,pc端不用处理宽度也可以正常播放

记录一下使用videojs的代码

        <div id="videoParents">
            <div class="video-box">
                <video id="videoPlayer" 
                    class="video-js" 
                    x5-video-player-type="h5" //启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上(比如弹幕)
                    x-webkit-airplay="true" 
                    playsinline 
                    webkit-playsinline="true" //playsinline可以让视频在小窗内播放,可以解决ios播放视频默认全屏问题,
                    preload="none" 
                    controls
                    src="https://video.hua.com/publicity_video_2020_m.mp4"
                    poster="https://img02.hua.com/m/about_us/publicity_video_img.jpg">
                        <source src="https://video.hua.com/publicity_video_2020_m.mp4" type="video/mp4">
                        <p class="vjs-no-js">您的浏览器不支持 HTML 5 Video 标签,请升级浏览器。</p>
                </video>
                <!-- 这个默认隐藏,在视频播放完显示出来盖在播放器上面,解决视频播放完,播放器区域全部是黑色的问题 -->
                <div class="preview-pic">
                </div>
            </div>
        </div>

videojs初始化代码如下:
玩家准备:初始化方法
Video.js选项参考:第二个参数可选

 		videoInit.call("#videoParents");
        function videoInit() {
            if (typeof videojs != 'function') {
                return false;
            }
            window.player = videojs("#videoPlayer", {
                autoplay: false,
                controls: true,
                muted: false,
                preload: 'metadata',
                // loop: true,
                width: this.width,//this指向video父级
                //height: this.height,
                //视频长宽比例,这个可以根据视频的帧宽高算出来,可以保证播放器没有黑边,全部占满
                aspectRatio: "16:9"
            }, function () {
                //console.log("video init")
                //this.addClass("vjs-matrix");//添加自定义类名
                var _height = $(".vjs-control-bar").css("height");
                $(".preview-pic").css("bottom", _height);
        		//视频数据加载完成,可以获取视频时长
                this.on('loadedmetadata', function () {
                    var videoTimeLength = Math.round(this.duration()) || "00";
                });
                //播放
                this.on("play", function () {
                    $(".preview-pic").hide();
                })
                // 结束
                this.on('ended', function () {
                    $(".preview-pic").show();
                    if (this.isFullscreen()) {
                        //退出全屏
                        player.exitFullscreen();
                    }
                });
            });
        }

结语

每个人遇到的问题肯定都是不同的,我这里只是记录一下自己的问题,上面代码如有不合理之处,请不吝赐教,谢谢!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
出现"videojs the media could not be loaded, either because the server or network"的错误提示,通常是由于以下几个原因导致的。 首先,可能是服务器上的媒体文件并不存在。请确认服务器上的媒体文件是否存在,并且路径是否正确。如果路径不正确,你需要更新路径或者重新上传媒体文件至服务器。 其次,可能是服务器的媒体文件权限设置不正确。请确保媒体文件可被服务器读取,并且权限设定正确。你可以检查服务器的媒体文件权限,并更新为正确的权限设置。 第三,可能是网络连接问题。请确保你的网络连接正常并且稳定。你可以尝试通过其他浏览器或设备来访问相同的媒体文件,以确定是否为网络问题导致的无法加载。如果其他浏览器或设备也无法加载该媒体文件,那么很可能是服务器端的问题。 最后,可能是视频格式不受支持。请检查你的视频文件格式是否受videojs支持。videojs通常支持多种音视频格式,但也有一些受限于浏览器的支持范围。你可以将视频文件转换为受支持的格式,然后重新上传至服务器。 综上所述,当出现"videojs the media could not be loaded, either because the server or network"的错误提示时,你可以通过检查媒体文件是否存在、服务器权限设置是否正确、网络连接是否正常以及视频格式是否受支持等方面解决该问题。如果问题仍然存在,你可以尝试向videojs的支持团队或相关技术社区咨询寻求更详细的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值