【问题标题】:How to enable buffer in a php html5 video?如何在 php html5 视频中启用缓冲区?
【发布时间】:2018-04-10 06:27:57
【问题描述】:

我正在尝试通过 phphtml5 播放视频,并隐藏或保护 url。

<?php
   $path = "http://myserver.com/myfiles/greetings.mp4";
   $filePointer = fopen($path, 'r');
   header('Content-Type: video/mp4');
   fpassthru($filePointer);
?>

效果不佳,视频在播放器中加载,但播放器在视频完全 100% 加载之前不会播放视频,我的视频文件大小为 40mb。

  • 注意:header("Content-Length: ".filesize($path)); // 这也不能正常工作 //

这是我的html代码

<video width="400" controls>
  <source src="myvideo.php" type="video/mp4">
</video>

对不起,如果我的问题不完美:(

评论:换句话说,我使用 fopen();用于非直接传输视频、保护或隐藏我的原始视频源...

【问题讨论】:

  • 是您的视频在前面使用 MOOV atom 编码(允许浏览器更快开始播放)还是在结尾(默认),这意味着它必须等到它读取所有内容 - 请参阅stackoverflow.com/questions/48156306/…
  • 我的视频使用 H256 mp4 编码...
  • 你的意思是H265/HEVC吗?同样的问题,MOOV atom 需要在文件的开头而不是结尾
  • H256/AVC 是我目前的mp4编解码格式,如果是这个问题,你推荐什么?,什么格式不包含这个问题?

标签: php html video


【解决方案1】:

请在 HTML 中的视频标签上添加 preload="auto",以便浏览器在页面加载时加载整个视频。

不要使用 PHP fopen 函数来加载视频,像这样使用直接 URL 到 video 标签。

<video width="400" controls>
  <source src="http://myserver.com/myfiles/greetings.mp4" type="video/mp4">
</video>

因为文件打开需要时间。如果你也想要 PHP 文件,那么像这样使用 PHP

<?php
   echo $path = "http://myserver.com/myfiles/greetings.mp4";
?>
<video width="400" preload="auto" controls>
  <source src="myvideo.php" type="video/mp4">
</video>

【讨论】:

  • 我终于找到了解决方案,问题是我的编码格式,mp4不允许通过php加载缓冲区,webm是的:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2011-05-03
相关资源
最近更新 更多