1

PHP経由でmp4ファイルをフラッシュプレーヤーにフィードしようとしていますが、再生を開始する前にビデオが完全にダウンロードされます。

$src = '/var/www/user/data/www/domain.com/video.mp4';
if(file_exists($src) and is_readable($src)) {
    header('Content-Type: video/mp4');
    header('Content-Length: '.filesize($src));
    readfile($src);
} else die('error');

同様の結果でcurlを試しました。この遅延の原因は何ですか?

4

2 に答える 2

2

ほとんどの場合、Flash プレーヤーは、HTTPRangeリクエストを処理して再生をより速く開始できることを望んでいます。

HTML5/Flash オーディオ プレーヤーjPlayer の開発者ガイドには、これに関するセクションがあります。Byte-Range Requests に関する部分までスクロールします。

サーバーで Range リクエストを有効にする必要があります。これは、サーバーの応答のヘッダーに Accept-Ranges が含まれているかどうかを確認することで簡単に確認できます。

Rangeまた、直接ダウンロードする代わりに PHP を使用する必要がある場合は、リクエストを処理するための PHP ソリューションが提供されていることにも注意してください。

smartReadFile.php
https://groups.google.com/forum/#!msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ

于 2012-10-02T18:08:54.347 に答える
0

別のオプションは、phpでファイルを読み取ってX-Sendfileを使用して出力にダンプするのではなく、Apacheにファイルを送信させることです。

まず、Apache が sendfile サポート付きでコンパイルされていることを確認してから、出力コードを次のように変更します。

header ('X-Sendfile: ' . $src);
header ('Content-Type:  video/mp4');
header ('Content-Disposition: attachment; filename="' . $filename . '"');
exit;

通常、これは PHP 経由で行うよりも高速です。

于 2012-10-02T18:15:45.207 に答える