【问题标题】:Chromecast PHP Buffer MP4Chromecast PHP 缓冲区 MP4
【发布时间】:2014-03-05 09:29:27
【问题描述】:

我有一个 Chromecast 和一个在线 mp4 文件的 URL。我还有一个 2Mbps 的下载连接,这太可怜了,而且直接缓冲到 Chromecast 太慢了。这就是我到目前为止所尝试的:

通过开发者控制台,我简单地将 location.href 设置为 mp4 的在线 URL。 Chromecast 将缓冲 20 秒,播放 10 秒的视频,然后再次缓冲。所以,通过控制台,我暂停了视频,让它缓冲 5 分钟。当我让它再次播放时,它播放了大约 15 秒,然后失去了所有进度,不得不返回主屏幕。

由于我不想等待 mp4 的整个下载完成,我目前正在尝试这样做:我将 mp4 缓冲到我的 htdocs 目录中的本地文件,然后将 Chromecast 定向到该文件文件的位置。但是,当通过 Chrome(浏览器)打开 mp4 文件时,它不会播放,而是显示下载提示,并且 Chromecast 会返回主屏幕。

我已经在 PHP 中实现了缓冲,它看起来是这样的:

$bufferSource = 'http://example.com/path/to/file.mp4';

$bufferedReader = fopen($bufferSource, 'r');

while(!($finished = feof($bufferedReader))){

    if($finished !== false){ break; }

    //get onle line
    $buffer = fgets($bufferedReader);


    file_put_contents('buffer.mp4', $buffer, FILE_APPEND);

}

fclose($bufferedReader);

我知道 PHP 可以完成它的工作,因为我可以看到文件大小在我的计算机上增长,并且我可以使用 VLC 打开文件。我是否可以制作另一个 PHP 脚本来访问模拟“可缓冲性”的本地缓冲 mp4 文件,因此 Chrome 不显示下载对话框而是缓冲文件,Chromecast 也应该这样做?

编辑:还有一件事。我没有将 Chromecast 指向 PHP 脚本。我实际上是直接将它指向 buffer.mp4 文件。

【问题讨论】:

    标签: php video buffer google-cast


    【解决方案1】:

    您可以使用带有媒体元素标签的接收器,然后将其源指向您服务器上的 mp4 文件。如果您不想编写自己的接收器,可以使用 defaultStyled Media Receiver 。您需要一个非常简单的发件人来发送 url,查看github repo 以获取示例

    【讨论】:

      【解决方案2】:

      您的 PHP 脚本中缺少 Content-Type 标头。

      找出来自您的服务器的原始内容类型标头(可能是video/mp4),并将其与您的代理脚本一起发送,如下所示:

      header('Content-Type: video/mp4');
      

      这将允许浏览器检测内容类型并直接播放(如果支持),无需下载。

      另外,我会考虑使用真正的代理服务器,例如 Nginx,而不是重新发明轮子。这将更容易、更可靠。

      【讨论】:

      • 实际上,我只是使用 PHP 脚本来缓冲文件。我不访问 Chromecast 上的 PHP 脚本,而是访问生成的文件本身,我认为由于脚本缓冲文件而自动包含标题。所以服务器->客户端和本地服务器->Chromecast是两个独立的、独立的进程。
      • @arik-so 无论哪种方式,您的问题都是一样的。您的本地服务器未配置为发送正确的内容类型标头。如果您要发布您使用的服务器,我可以更具体地指导您。
      • 我正在使用 XAMPP 本地服务器。在那种情况下,明天我将尝试在发送 mp4-header 后创建另一个访问该文件的页面。
      • @arik-so 您不需要其他脚本。您的 Web 服务器可以自行处理。只需将其添加到您的 Apache 配置中:AddType video/mp4 .mp4
      • 谢谢,它有效!但是,我仍然需要编写自己的脚本,因为它是本地网络,所以 Content-Length 标头也需要发送,否则 Chromecast 会过早停止缓冲/播放。
      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多