PHP
1<?php 2//loadsound.php 3header("Content-Type: audio/wav"); 4header("Content-Length: ".filesize($filepath)); 5header("Content-Ranges: bytes 0-".(filesize($filepath)-1)."/".filesize($filepath)); 6header("Content-Transfer-Encording: binary"); 7while(ob_get_level()>0){ 8 ob_end_clean(); 9} 10ob_start(); 11$fp=fopen($filepath); 12if($fp){ 13 while(!feof($fp)&&(connection_status()==0)){ 14 echo fread($fp,4096); 15 ob_flush(); 16 flush(); 17 } 18 fclose($fp); 19}
このプログラムにアクセスすると、音声は再生され、画像のようなコントロールも表示されるのですが、シークができません。readfileでやったときはできたのですが、やはり重たいのでfreadでやりたいと思っています。どうすれば正常に再生できるようになるのでしょうか。
どれくらいのサイズのファイルなのでしょうか。 fread()は記述の通りそれこそ「少しずつ読み込む」なので一気にファイル全部読み込むreadfileに比べればシークができないのは致し方ないと個人的には思います。PHPマニュアルのfread()のUser Contributed Notesにあるfseek()はまた別の役割でしょうし・・
あなたの回答
tips
プレビュー