PHP媒体拖缆

PHP媒体拖缆,php,android,html,caching,video,Php,Android,Html,Caching,Video,我想为我的网站创建一个简单的PHP媒体流 我设法在网络浏览器和Android上的VideoView中流式播放视频 我想做什么 一次将此视频流传送给多个用户 将HTML5视频缓存在android上的SD卡上 问题 我可以流式播放视频,但仅限于一个用户 我无法在SD卡上缓存视频 代码 streamer.php <?php $file = './'.$_GET["file"]; $pos = (isset($_GET["pos"])) ? intval($_GET["pos"]): 0;

我想为我的网站创建一个简单的PHP媒体流

我设法在网络浏览器和Android上的
VideoView
中流式播放视频

我想做什么

  • 一次将此视频流传送给多个用户
  • HTML5
    视频缓存在android上的
    SD卡上
问题

  • 我可以流式播放视频,但仅限于
    一个
    用户
  • 我无法在SD卡上缓存视频
代码

streamer.php

<?php
$file = './'.$_GET["file"];
$pos = (isset($_GET["pos"])) ? intval($_GET["pos"]): 0;

header("Content-Type: video/x-flv");
header('Content-Length: ' . filesize($file));

$fh = fopen($file,"rb");
fseek($fh, $pos);
fpassthru($fh);
fclose($fh);

?>
在android方面

CACHE MANIFEST
# 2014-03-08 v1.0.0
/video.mp4
...
String appCachePath = Environment.getExternalStorageDirectory().getAbsolutePath();
wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
wv.getSettings().setAppCachePath(appCachePath);
wv.getSettings().setAppCacheEnabled(true);
wv.getSettings().setAllowFileAccess(true);
wv.getSettings().setDomStorageEnabled(true);
...

我想,缓存问题是由于未发送/设置头造成的。尝试一下:

    header('Pragma: private');
    header('Expires: '.date('D, d M Y H:i:s \G\M\T', time() + 7200));
    header('Cache-control: private, max-age=7200, must-revalidate');
    header('Content-Length: '.filesize($file));
    header('Content-Disposition: filename='.md5($file));
另外:设置
标题('Content-Type:video/x-flv')但使用
type=“video/mp4”
。我猜应该是
标题('Content-Type:video/mp4')


下一步:为了让
$\u GET[“pos”]
工作,您需要计算并相应地设置
接受范围
标题。

您在PHP方面遇到了什么错误/问题-是拒绝服务第二个流还是以某种方式失败?另外,您在android上将流文件写入SD卡时遇到了什么问题?我没有收到任何错误。。当我在另一台电脑上打开网站时,视频直到第一台电脑完成后才会加载。安卓系统的问题是,当重新启动应用程序时,视频会再次流式播放,而此时它应该直接播放@offbeat,这太棒了。。非常感谢它像一个魅力,我现在可以流在同一时间为多个用户相同的视频。。我现在会尝试修复Android上的缓存,我会给你我的反馈@Jens AndréKochTurns,这是一个简单的路径问题。。当我生成动态清单缓存时,我发现了。。我会接受你的回答,因为它解决了我的一个问题:)@Jens AndréKoch
    header('Pragma: private');
    header('Expires: '.date('D, d M Y H:i:s \G\M\T', time() + 7200));
    header('Cache-control: private, max-age=7200, must-revalidate');
    header('Content-Length: '.filesize($file));
    header('Content-Disposition: filename='.md5($file));