php html输出视频,无浏览器扩展

php html输出视频,无浏览器扩展,php,Php,我有媒体文件,如mp4,ogg等服务器上的第页。但是问题是由于一些安全原因,文件没有任何扩展名,尽管它们是媒体文件。 因此Apache无法识别mime类型,因此html5视频标签无法播放视频 我的选择是什么? 由于我没有任何扩展,.htaccess无法工作。 如果我把文件扩展名放在名称中,它就会开始工作。 我也有mime类型的这些文件存储在数据库中 文件结构: asdsad/media werewr/media 23frwe/media //where media is the file (

我有媒体文件,如mp4,ogg等服务器上的第页。但是问题是由于一些安全原因,文件没有任何扩展名,尽管它们是媒体文件。 因此Apache无法识别mime类型,因此html5视频标签无法播放视频

我的选择是什么?

由于我没有任何扩展,
.htaccess
无法工作。 如果我把文件扩展名放在名称中,它就会开始工作。 我也有mime类型的这些文件存储在数据库中

文件结构:

asdsad/media
werewr/media
23frwe/media

//where media is the file ( could be mp4/ogg/webm) with no extension.
// before / is folder name
// If i change media to media.mp4 , it works
.htaccess文件

AddType video/ogg .ogv .ogm .ogg
AddType audio/ogg .oga .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType video/x-m4v .m4v
AddType text/x-vcard .vcf
如果我从php输出文件而不是从localpath链接它会怎么样? 行吗? 像这样的

header("Content-type: video/mp4");
echo file_get_contents($pathTmp4);

考虑一下。将直接绕过
file\u get\u contents
在内存中的加载进行输出

或者只需打开文件并使用
fread
发送块在发送之前,切勿将整个内容加载到内存中。

更新

就速度而言,您需要进行测试。这将绕过.htaccess问题,因为它使用PHP输出文件。这允许您控制标题并将适当的类型提供给浏览器。缺点是只传递文件的PHP开销

我个人会选择
fopen
+
fread
+
fclose
组合,因为我们谈论的是大型视频文件。这还允许您在DB中跟踪发送进度、跟踪交付速度等。实时下载跟踪可能对您有用

但对于其他任何东西(小土豆),我使用
readfile
()。它不会给你更新,直到它完成。但它确实起到了作用


你还需要测试。使用100+MB的视频文件并发送。查看PHP实例上的内存情况以及它的整体行为。

readfile也从不将整个文件读入内存,除非您打开了输出缓冲。您能详细解释一下吗?(1) 哪种方法会更快,因为我有很长的视频(2)它会绕过.htaccess文件的问题吗?它会比html标签中直接链接的文件慢吗?@django添加了一些注释,但您不需要这些注释。我告诉你的太多了。您需要测试并应用适合您的场景的内容。没人能猜出你在互联网上做什么;对于大文件,这似乎要快得多。
<?php
// tell the browser the file type
header("Content-type: video/mp4");
// tell the browser the file size
header(sprint("Content-size: %d", filesize($pathTmp4)));
// disable output buffering before delivering the file
while(ob_get_level()) ob_end_clean();
// send it over
readfile($pathTmp4);
// done, track speed and such optional stuff here
?>