【问题标题】:Java serve files to iOS videoJava 将文件提供给 iOS 视频
【发布时间】:2016-09-13 00:17:27
【问题描述】:

我试图通过将文件从 Java 服务器代理到 Web 应用程序来解决跨域问题。这在大多数情况下都可以正常工作,但在 iOS 中视频将无法运行。

如果视频直接来自 Amazon S3,它会运行,但如果我尝试从本地服务器运行它,我会收到“media_err_src_not_supported”错误。

我假设它与标题有关。我正在返回文件:

        String filename = URLDecoder.decode(f, "UTF-8");
    File file = new File("resources/files/", filename);
    response.setHeader("Content-Type", "video/mp4");
    response.setHeader("Content-Length", String.valueOf(file.length()));
    response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
    Files.copy(file.toPath(), response.getOutputStream());

并尝试各种方法将视频文件放入视频元素中,即

video.src = "/file/1.mp4";

    video = document.createElement( 'video' );
   source = document.createElement('source');
   video.appendChild(source);

  source.setAttribute('src',"/file/1.mp4");
  source.setAttribute('type',"video/mp4");

视频以 FFMPEG 格式编码

ffmpeg -i out.mp4 -vcodec libx264 -profile:v baseline -preset slow -pix_fmt yuv420p -b:v 5000k -maxrate 5000k -bufsize 2200k -s 1920:1080 -threads 0 -b:a 128k -movflags faststart out2K.mp4

如果来自 S3,将播放它,而不是来自我的服务器。

编辑

我在使用 MP4 plays when accessed directly, but not when read through PHP, on iOS 方面取得了一些进展

浏览器中的错误相同,但服务器报告它正在发送浏览器请求的文件

34959 [qtp1121453612-40] INFO co.beek.pano.service.restService.MultipartFileSender - Return full file
35022 [qtp1121453612-37] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (15535447)
47812 [qtp1121453612-38] INFO co.beek.pano.service.restService.MultipartFileSender - Return full file
47971 [qtp1121453612-40] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (1)
47991 [qtp1121453612-39] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (16232853)
48380 [qtp1121453612-40] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (552544) to (16232853)
72467 [qtp1121453612-40] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (1)
72478 [qtp1121453612-39] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (15535447)
74094 [qtp1121453612-39] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (1)
74159 [qtp1121453612-51] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (15535447)
156335 [qtp1121453612-40] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (1)
156349 [qtp1121453612-57] INFO co.beek.pano.service.restService.MultipartFileSender - Return 1 part of file : from (0) to (15535447)

【问题讨论】:

  • 您实现了多少 HTTP 范围请求规范?你能展示产生你所包含的日志的代码吗?
  • 感谢代码是那个链接。
  • 该代码是用 PHP 而不是 Java 编写的。你实际上在做什么?

标签: java ios video


【解决方案1】:

手动设置内容类型

 video = document.createElement( 'video' );
   source = document.createElement('source');
   video.appendChild(source);

  source.setAttribute('src',"/file/1.mp4");
  source.setAttribute('type',"video/mp4");

除了让这个多部分的 servlet 正常工作之外,还修复了它

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多