【问题标题】:MP4 videos started playing instead of downloading in HTML5 web appMP4 视频开始播放而不是在 HTML5 网络应用程序中下载
【发布时间】:2014-02-13 22:17:02
【问题描述】:

我有一个 HTML5 网络应用程序,其中有一个表单,用户可以通过该表单提交他们想要下载的视频和格式。提交表单时,响应返回请求的视频格式 URL,并自动开始下载。

返回的视频 URL 未直接指向资源。相反,它重定向到资源。

这适用于 FLV 文件,但不适用于 MP4 文件。

对于 FLV 文件下载开始没有任何问题。但对于 MP4 文件,播放器正在启动来播放它。

如果没有重定向资源 URL,此行为是相同的。

以下代码在收到响应时自动生成 MP4 视频:

<video autoplay="" controls="" style="position:absolute; top:0; left:0; width:100%; height:100%"></video>

如果是 MP4 视频,请提供停止加载播放器并启动下载的任何解决方案。 我不控制资源服务器。

【问题讨论】:

  • 您需要一个 Content-Disposition: attachment http 标头或更改响应 mimetype。
  • 我正在使用 iframe 技术启动下载
  • 很好:)。不会改变你需要做的事情。

标签: html video download


【解决方案1】:

AD7six 是正确的,但我也会更改内容类型:

   Content-Type: application/octet-stream

如果您同时使用这两种方法,它可以跨浏览器运行... disposition 标头还允许您为要下载的文件指定一个名称,以防您想更改它或通过 PHP 文件下载

【讨论】:

  • 可悲的是我无法控制资源服务器。要启动下载,我使用的是 iframe。有没有办法限制视频标签的形成?我知道有关强制下载的所有三种流行技术。但是其中只有 Iframe 技术我可以在这里应用,但它失败了:(
  • 不。如果您无法让所有者帮助您,则应重新考虑您的项目...
  • 实际上他们使用相同的服务器来流式传输视频,因此他们不想改变任何东西(可能会破坏某些东西)并且他们有不同的开发团队:(
  • 他们可以使用符号链接将视频目录包含在另一个目录中,该目录会自动发送其他标题。另一种解决方案是将变量附加到 URL 并在服务器配置中过滤该变量以发送其他标头
  • 让我向他们推荐你的解决方案.. :)
【解决方案2】:

来自this article

<?php
$file = "filename.ext";

// Quick check to verify that the file exists
if( !file_exists($file) ) die("File not found");

// Force the download
header("Content-Disposition: attachment; filename="" . basename($file) . """);
header("Content-Length: " . filesize($file));
header("Content-Type: application/octet-stream;");
readfile($file);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多