苹果safari浏览器播放不了video标签视频

今天遇到了个神奇的问题,视频文件在pc端和安卓手机上播放都没问题,但是在ios上就是播放不了,大概代码如下:

前端代码:

html 复制代码
    <video id="video" width="350" height="500" controls>
        <source src="/getFileVideo" type='video/mp4'>
    </video>

后端代码:

java 复制代码
    /**
     * description 获取视频文件
     *
     * @author yanzy
     * @date 2022/12/16 17:37
     */
    @GetMapping("/getFileVideo")
    public void getFileVideo(HttpServletResponse response) throws IOException {
        File videoFile = new File("E://test.mp4");
        FileInputStream inputStream = new FileInputStream(videoFile);
        ServletOutputStream out = response.getOutputStream();
        int byteRead = 0;
        byte[] buffer = new byte[1024];
        while ((byteRead = inputStream.read(buffer)) != -1) {
            out.write(buffer, 0, byteRead);
        }
        out.flush();
        inputStream.close();
    }

PC端没任何问题:

IOS端播放不了:

在网上搜索了很多办法,有加前端参数配置的:

html 复制代码
    <video id="video" width="350" height="500" controls
       muted autoplay preload loop
       x5-video-player-fullscreen="true"
       x5-playsinline
       playsinline
       webkit-playsinline
       poster="test.jpg">
        <source src="/getFileVideo" type='video/mp4'>
    </video>

有改后端多次发送请求,分段获取数据流的:

经过多次测试最终找到了问题,视频文件在ios上需要两个参数,一个是视频文件的类型,一个是文件的大小长度:

java 复制代码
        response.setContentType("video/mp4");
        response.setHeader("Content-length", String.valueOf(videoFile.length()));

修改后ios浏览器就可以正常播放了:

相关推荐
码不停蹄的玄黓1 分钟前
Arthas 最常用命令速查表
java
石榴树下的七彩鱼4 分钟前
发票OCR识别API接入教程:从图像到结构化数据的完整实战(附Python/Java/PHP/JS代码)
java·python·ocr·api接口·财务自动化·石榴智能·发票ocr
爱吃羊的老虎4 分钟前
【JAVA】Java微服务—分布式事务框架Seata
java·开发语言
古韵6 分钟前
TanStack Query 被高估了?这 5 个场景它真不如 alova
前端
Jul1en_10 分钟前
【Redis】事务详解、WATCH 实现思想
java·spring boot·redis·mysql·java-ee
也非非也10 分钟前
Agnes AI 全模态 API 免费实测报告:文生图 + 文生视频完整测试
人工智能·音视频
心前阳光10 分钟前
Unity之使用火山引擎实现音频剪辑提问,流式语音回复
unity·音视频·火山引擎
SimonKing12 分钟前
你还在靠重启来调线程池?别人已经做到了实时调控,3分钟接入
java·后端·程序员
小张小张爱学习14 分钟前
Java并发编程面试题
java·开发语言
颂love16 分钟前
Vue3基础入门
前端·学习·vue3