タグ:mp4
大容量のmp4ファイルをPHPで読み込んで出力する場合
数MBレベルのmp4ファイルならば
header('Content-type: video/mp4'); readfile("mp4ファイルのパス"); exit;
で十分対応できていたのですが、100MB越えのファイルになった際、「ファイルが壊れているため動画を再生できません。」という表示になってしまいました。
いろいろと調べた結果、readfileがダメとのこと。
記述を
header('Content-type: video/mp4'); $handle = fopen("mp4ファイルのパス", 'rb'); while (!feof($handle)) { echo fread($handle, 4096); ob_flush(); flush(); } fclose($handle); exit;
と変更したところ、正常に再生されました。
ちなみにこれ、メモリによるみたいです。
ini_set("memory_limit","256M");
とPHPに記述しメモリ制限を増やしたところ、「readfile」でもうまく行きました(使用したファイルの容量は160MBです。)
でもこれはレンタルサーバによっては効かない場合もあるので、やっぱり後者の記述方法が確実かと思います。
※後者の場合ini_set("memory_limit","8M")でも正常に再生できました。
参考サイト
nandani | 2013年06月19日 | コメント(0) | トラックバック(0) | PHP関連