从 spring 以字节数组形式加载视频不会在移动设备上播放



我有一个以字节数组的形式加载媒体文件的Web服务。它在桌面Web浏览器上完美加载和播放,但在任何移动设备上都失败。

关于如何解决此问题的任何提示?

我已经设置了必要的标题,但它仍然无法播放。

更新:

HttpHeaders headers = new HttpHeaders();
headers.add("Access-Control-Allow-Headers", "Content-Range, X-Chunked-Output, X-Stream-Output");
headers.add("Access-Control-Allow-Methods", "GET");
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Expose-Headers", "Content-Range, X-Chunked-Output, X-Stream-Output");
headers.add("Cache-Control", "public, max-age=29030400, immutable");
headers.add("Accept-Ranges", "bytes");
headers.add("Connection", "keep-alive");
headers.add("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(
IOUtils.toByteArray(inputStream), 
headers,
HttpStatus.OK);

它在桌面应用程序上加载得很好,但在移动设备上加载得不好。

蒂亚。

解决方案(感谢我的一位同事(是苹果设备(如iPhone/iPad(将所有视频视为流内容。这意味着当设备请求 mp4 时(例如(,它会尝试获取请求的部分内容(以字节为单位(。

这意味着,如果请求来自 Apple 设备,则代码应适当设置用户代理和范围。

conn.setRequestProperty("User-Agent","<User agent depending on the device");
conn.setRequestProperty("Range","bytes: 0-1023"); 

最新更新