| ブログトップ | PHP関連 |

大容量のmp4ファイルをPHPで読み込んで出力する場合

この記事は1年以上前の記事のため、内容が古い可能性があります。

数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

日々の生活にhappyをプラスする|ハピタス

このエントリーをはてなブックマークに追加

LINEで送る

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

トラックバック

トラックバックURL

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2024 ダリの雑記