1

助けが必要です。私はストリーミング オーディオ システムに取り組んでおり、チャンク転送エンコーディングに問題があります。実際、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);
?>

手伝ってくれてありがとう

4

1 に答える 1

0

2.3 より前の Android は、独自のプレーヤーのチャンク エンコーディングをサポートしていません。独自のクライアントを実装する他のプレイヤーも問題を抱えている可能性があります。iOS はテストしていません。チャンク エンコーディングは、多くのデスクトップ ストリーミング クライアントでも問題があります。互換性を最大化するために使用しないことをお勧めします。

これには 2 つの方法があります。HTTP/1.01 つ目は、応答を返すことです。これは、コンテンツの長さを指定する必要がなく、サーバーが送信を停止すると応答が停止することを意味します。

2 番目の方法は最初の方法と似ていますが、 を使用できますHTTP/1.1。ヘッダーを設定するだけConnection: closeです。これにより、コンテンツの長さを指定する必要がなくなり、チャンク エンコードでデータを送信する必要がなくなります。

于 2013-04-18T14:54:19.967 に答える