【问题标题】:PHP Audio transfer with chunked encoding使用分块编码的 PHP 音频传输
【发布时间】:2013-04-10 01:13:54
【问题描述】:

我需要帮助,我正在开发流式音频系统,但我遇到了分块传输编码的问题,实际上我不知道如何使它在 IOS、Android 等设备上可用。有没有其他选择分块编码?这是我的代码:

<?php
header('Transfer-Encoding: chunked');
header('Content-Type:audio/mpeg');
header('Connection: keep-alive');
ob_clean();
flush();

$buffer = '';
    $handle = fopen($filepath, 'rb');
    if($handle === false){
        return false;
    }

    while(!feof($handle)){
        $buffer = fread($handle, 8192);

        echo sprintf("%x\r\n", strlen($buffer));
        echo $buffer;
        echo "\r\n";

        ob_flush();
        flush();
    }

    echo sprintf("%x\r\n", 0);
    echo "\r\n";



    fclose($handle);
?>

感谢您的帮助

【问题讨论】:

    标签: php audio audio-streaming chunked-encoding


    【解决方案1】:

    2.3 之前的 Android 不支持对其自己的播放器进行分块编码。其他实现自己客户端的玩家也可能有问题。我没有测试过iOS。对于许多桌面流媒体客户端来说,分块编码也存在问题。最好不要使用它以最大限度地提高兼容性。

    有两种方法可以做到这一点。第一个是返回一个HTTP/1.0 响应。这意味着您不必指定内容长度,并且在服务器停止发送时响应停止。

    第二种方式与第一种方式类似,但允许您使用HTTP/1.1。只需设置标题Connection: close。然后,您不必指定内容长度,也不必以分块编码发送数据。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 2012-11-02
      • 2013-02-13
      • 2012-02-18
      • 2012-01-26
      相关资源
      最近更新 更多