ヒルが URL を取得して iPhone や Roku アプリで使用するのを防ぐために、php スクリプトを使用してファイルを JWPlayer に提供しています。だから私は videoplay.php?id=myfile を呼び出します。出力は mp4 ビデオ ストリームです。通常、ファイルは 200 ~ 500M バイトです。
php スクリプトは正しく動作し、微調整を加えることで、最初のバージョンよりもはるかに優れたパフォーマンスを発揮します。しかし、それは資源の浪費です。1 つのファイルをストリーミングしているときに、ブラウザで別のウィンドウを開いて同じ Web サイトのページを開くことはできません...現在のページのソースを表示することさえできません。プレーヤーに直接 URL を指定してまったく同じビデオ ファイルを再生すると、リソースを大量に消費する問題は発生せず、ビデオの再生中にページのソースを表示したり、同じ Web サイトの 2 つのビデオを同じブラウザで同時に再生したりできます ( 2 つの異なるページで)。
これが私のコードです
// some code to query database and get the file url
//
$fh = fopen($filename, "rb") or die("Could not open movie\n");
while (!feof($fh) && connection_status() == 0)
{
print(fread($fh, 1024*8));
flush();
ob_flush();
usleep(10000);
}
fclose($fh);
リソースの使用を制限するために usleep を追加しましたが、うまくいきませんでしたが、動画の読み込みが速くなったようです。usleep をもっと長くすると (例: 1/10 秒)、ビデオの読み込みに時間がかかります。チャンク サイズを 1024*4 から 1024*16 の間で変化させると、8k バイトでビデオの読み込み時間が最速になるようです。16kbyte はさらに多くのリソースを使用し、25MBit 接続を使い果たしているようです。ビデオがローカル サーバーからまったくロードされません (ただし、クラウド サーバー上のリモート ビデオはロードされます)。チャンク サイズを 1kbyte に減らしても、リソースの問題は解決しませんでした。
私は何を間違っていますか?