我试图启用我的内容服务器上的mp4stream式传输。 由于一些安全狂热分子,我与所有文件工作通过一个PHP脚本交付,并具有以下url格式:
http://server.com/cdn/3/getObject?param1=71¶m2=1002&file=File1000.mp4
因此,所有标准格式的stream式处理请求(例如下面的url)都会由于附加的参数而失败
http://server.com/cdn/3/getObject?param1=71¶m2=1002&file=File1000.mp4?start=10.0
目前我正在运行nginx,编译并运行mp4stream模块。 我正在考虑做一个URL重写,以启用stream式传输,但我迄今没有成功。 除此之外,我将不得不在下一步中启用安全stream式传输。
任何帮助将不胜感激。
更新:
看来我的问题还不够清楚。
我不想使用PHP脚本或任何stream来传输我的mp4文件。 我的问题是使用PHP脚本来确定文件的path,这是因为我需要确保人们不能猜测其他的URL。 所以如果所有其他参数都适合,getObject脚本只是返回所请求的文件而不做任何修改。 现在的问题是,这使得不可能stream式传输文件。 任何尝试传输mp4文件(例如,使用stream式播放器)都会失败,即使启用了stream模块。
没有HTTP蒸汽这样的东西。 有几个黑客来模拟它。
第一个和最老的是使用Range:头来指定客户想要的文件块。 没有什么能够阻止PHP脚本根据这个头发送正确的块,只需要在头文件中读取并返回正确的响应头文件数据。
其次是使用某种types的服务器模块,它理解正在stream式传输的文件的格式,并在任何时隙提供“正确的”数据量。 这是ngninx的mp4模块正在做的事情。 有可能编写一个PHP脚本来计算文件的数据速率,然后以这个速率发送文件,但我不知道,编程它会很困难。