タグ: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")でも正常に再生できました。

 

参考サイト

わくわくプログラミング自習室 Blogs Home

nandani | 2013年06月19日 | コメント(0) | トラックバック(0) | PHP関連

Copyright(c) 2010 - 2024 ダリの雑記