我花了几天时间寻找解决这个问题的方法,但我尝试的方法都没有。情况如下:我们在 Cloudfront 上托管了许多视频,并通过我们的网站流式传输这些视频。(奇迹般有效)
高级会员需要选择下载一些视频,但是,我们无法显示实际 URL。出于这个原因,我们设置了以下脚本,它从我们的 Cloudfront URL 读取视频并将其传递给服务器,从而有效地隐藏其位置。
这是奇怪的部分:虽然这对某些视频效果很好,但其他视频(具有相同编码)不会在 Apple 的 Quicktime 播放器中播放,说格式无法识别。如果我在 VLC 中打开文件,它工作得非常好,但苹果正在行动。
自然地,我尝试直接从它的 URL 下载文件,它在 Quicktime 中运行良好。此外,直接下载和 readfile passthru 中的标头都是相同的。
奇怪的是,正如我所说,其他分辨率较低的视频使用该脚本可以正常工作。不过,我找不到任何理由说明解决方案会对此产生影响。其他一切都是平等的。视频以 H.264 格式编码并存储在 MP4 容器中。
关于我可以做些什么来解决这个问题的任何想法?
非常感谢
header('Content-Description: File Transfer');
header('Content-Type: video/mp4'); //tried multiple options here, none work
header('Content-Disposition: attachment; filename=asciifriendly-filename.mp4');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: 1234567890'); //this number IS correct. 100%
ob_clean();
flush();
readfile ( $url ); //points to Cloudfront server