PHP媒体流媒体

时间:2014-03-09 17:18:09

标签: php android html5 caching video

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

我设法在网络浏览器和Android上的VideoView中播放视频就好了。

我想做什么

  • 立即将此视频投放至multiple个用户
  • 在{<1}}上将HTML5视频缓存在Android

问题

  • 我可以直播视频但仅限sdcard用户
  • 我无法将视频缓存在sdcard上

streamer.php

one

page.html中

<?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);

?>

cache.appcache

<HTML manifest="./cache.appcache">
  <video id="vid" controls>
  <source src="http://example.com/streamer.php?file=video.mp4" type="video/mp4">
  </video>
</HTML>

在Android方面

CACHE MANIFEST
# 2014-03-08 v1.0.0
/video.mp4

1 个答案:

答案 0 :(得分:1)

我猜,缓存问题是由于标头没有发送/设置。试一试:

    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));

另外:您设置header('Content-Type: video/x-flv');但使用type="video/mp4"。我猜,它应该是header('Content-Type: video/mp4');

下一步:要让$_GET["pos"]生效,您需要相应地计算和设置accept range标题。