0

直接リンクの代わりに関数を使用して取得する必要があるビデオ ファイルがあります。直接リンクのビデオ ページ コードを表示すると、画面に次のように表示されます。

ここに画像の説明を入力

しかし、関数を使用すると、まずビデオが実行されず、コードを表示すると、次のように表示されます。

ここに画像の説明を入力

同じファイル、同じ文字ですが、途中に多くの \0 文字があることに気付きました。これらは黄色のものです。

これは私が使用しているコードです:

$file_name = --path to file--;
$file_size = filesize($file_name);
$ctype = 'video/mp4';

header('Content-Type: '.$ctype);
header('Content-Length: ' . $file_size);
header("Accept-Ranges: bytes");    
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');

$file = fopen($file_name, 'rb');
$read = fread($file, $file_size);
print($read);
fclose($file);
exit;

コードを変更する必要がありますか? fread にファイルを適切に読み取らせるものはありますか? それとも、表示するファイルになんらかの加工が必要ですか?

4

1 に答える 1

1

/ /readfile()の代わりに使用してみてください。メモリ効率が向上し、エラーの影響を受けにくくなります。fopen()fread()fclose()

(ファイル パスが正しいと仮定して) コードが機能しない本当の理由はないと言いましたがdisplay_errors、PHP エラーがファイルを破損している場合に備えて、(一度) オフになっていることを確認する必要があります。ini_set('display_errors', 0);これは、スクリプトの先頭に設定することで実行できます。

于 2012-12-23T13:00:12.897 に答える