PHP 重新生成多媒体文件串流遇到奇怪问题

2013-09-17 18:42:24 +08:00
 Kaiyuan
我是直接仿照搜到的「防盗链」的代码改的。
声明一个文件头然后输出内容。

但是这样 PHP 重新生成的文件遇到的问题是:
IE10 完美支持;
Chrome 只能播放一次 mp4,不能播放 mp3;
Safari 不能载入 mp4,可以播放 mp3;
Chrome 和 Safari 如果直接打开连接都能正常播放,但是只用 <video> 引用则出现问题。
保存到本地完全没有问题。

以下是代码,简易的,实际用还会加上其他 key 的判断网址和时效。
https://gist.github.com/Kaiyuan/6592634
2414 次点击
所在节点    问与答
4 条回复
jasontse
2013-09-17 19:10:36 +08:00
内容大小不是 Accept-Length 而是 Content-Length。
看见了 Accept-Ranges 但是没有断点续传相关实现。
这种事情应该 X-Sendfile 做。
msg7086
2013-09-17 19:11:01 +08:00
好神奇的fread和print_r……
好神奇的404+Location……
好神奇的accept-ranges却不检查http_range不返回206……
msg7086
2013-09-17 19:12:54 +08:00
http://stackoverflow.com/questions/157318/resumable-downloads-when-using-php-to-send-the-file

这里有一个非常简易的断点续传实现,但是问题很多。一般没有太特殊的需求还是用sendfile吧。
Kaiyuan
2013-09-17 19:19:42 +08:00
@jasontse
@msg7086
我只是照抄的,对后端编程其实了解甚浅,直接搜出来就粗略的改了一下。当中代码其实不怎么懂其意思。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/82827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX