【问题标题】:I can download a video but do not play streaming php我可以下载视频但不播放流式 php
【发布时间】:2017-07-30 13:55:11
【问题描述】:

我有一个代码导致我的服务器向用户播放视频,没有 HTTP / 1.1 标头 206 Partial Content 速度非常低(介于 200 / 300kbps 之间),并且使用此标头它会跳转到最大速度.我不知道确切的原因。使用此标头,可以下载视频,但不能通过流媒体播放。流式传输的语法就像标签中的普通视频一样,不同之处在于 src 指向 stream.php 页面?链接 = mysite.com / link.mp4。

我不能使用 fseek,因为视频来自外部服务器

$link = $_GET['link']; $路径 = $链接; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $path); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_exec($ch); $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); header("内容类型:视频/mp4"); header("内容长度:".$size); header('接受范围:字节'); $handle = fopen($path, "rb"); 而 (!feof($handle)) { header('HTTP/1.1 206 部分内容'); header('Content-Range: bytes 0-'.$size); 回声 fread($handle, 100 * 1024 ); } fclose($句柄);

【问题讨论】:

  • 你为什么要通过 PHP 返回文件开始?为什么不在你的播放器中只保留原始 URL(来自 $_GET 变量)?
  • 我正在使用 API,但它不允许我请求下载不同 IP 的请求,所以我必须让服务器读取文件才能为任何用户播放它
  • 它是一个流媒体平台,所以在使用之前下载文件是不可行的
  • 啊,我看错了你的代码。我现在意识到你只用 curl 检查长度,但实际上是通过 fopen 流式传输...
  • 我不确定您是否可以像这样流式传输它并能够在文件中查找和跳过。看看这个答案:stackoverflow.com/questions/15797762/reading-mp4-files-with-php

标签: php video stream fread


【解决方案1】:

您是否尝试从 html 5 标签嵌入视频网址?这可能不会下载您的视频,但实际上它可以加载到浏览器中进行预览。

将“http://yoursite.com/generate_link/video.mp4”替换为您的网址。

<video width="320" height="240" controls>
  <source src="http://yoursite.com/generate_link/video.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>

【讨论】:

  • 我正在使用 API,但它不允许我请求下载不同 IP 的请求,因此我必须让服务器读取文件才能为任何用户播放。跨度>
  • 如果我使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多