2016-03-30 16 views
0

私が達成しようとしているのは、クライアントが接続するときに、ページがローカルのアイスキャストサーバ(http://127.0.0.1:8000/stream.mp3)から絶えず読み込まれ、ストリームをクライアントに戻すことができます。そこから、クライアントは基本的なオーディオタグで再生することができます。このコードではmp3ストリームを読み込み、クライアントにエコーバックする

<?php 
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"); 
header('Content-Disposition: attachment; filename="stream.mp3"'); 
header('X-Pad: avoid browser bug'); 
header('Cache-Control: no-cache'); 
print file_get_contents("http://127.0.0.1:443/stream.mp3"); 

はそれだけでラムを食べると、私はメガバイトのバッファがいっぱいになるまで、待って、それをクライアントにエコーの線に沿って何かを考えているクライアントに有益な何も返しません。しかし、idk、そうです。

私はPHPに熟練していないことに注意してください。ありがとう!

+0

私はあなたのhttpサーバ経由アイスキャストサーバをプロキシによって、HTTPサーバのレベルにそれを行うことを好むだろう。そうすれば、PHPはまったく使用されません。 – arkascha

+0

これはIIS Expressで可能でしょうか? – LaptonSpark

+0

申し訳ありませんが、私はそれについて全く考えていません。だからMSはMS-OutlookやMS-Outlook-Expressと同じようにもう一度やりましたか? _なぜ_? – arkascha

答えて

2

file_get_contents最後までストリームを読み込もうとしているため、ブロードキャストサーバーから読み込もうとしているため、終了しません。

HTML5がオプションの場合、次のように動作する可能性があります。

<audio autoplay> 
    <source src="http://127.0.0.1:443/stream.mp3" type="audio/mpeg">  
</audio> 

代替ソリューション:

<?php 
ob_start(); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"); 
header('Content-Disposition: attachment; filename="stream.mp3"'); 
header('X-Pad: avoid browser bug'); 
header('Cache-Control: no-cache'); 
$handle = fopen("http://127.0.0.1:443/stream.mp3"); 

while (($data = fread($handle, $bufferSize)) { //Buffer size needs to be large enough to not break audio up while getting the next part 
     echo $data; 
     ob_flush(); 
     flush(); 
     set_time_limit(30); // Reset the script execution time to prevent timeouts since this page will probably never terminate. 
} 
+0

申し訳ありませんが、私はローカルでIce-Castをホストし、HTTPサーバーポートを転送します。そして、httpサーバに接続しているクライアントは、icecastのインタフェースの他の部分にアクセスすることなく、何らかの形で../stream.mp3にしかアクセスすることができません。 – LaptonSpark

+0

私は選択肢を書き留めました(動作しているかどうかは確かではありませんが、テストしていませんが、なぜそうはならないのかわかりません)。 IIS Expressは残念ながらリバースプロキシをサポートしていません(http://stackoverflow.com/questions/7492965/can-iis-express-support-reverse-proxiesによる) – apokryfos

+0

これにシェアソリューションを提供し、私にタグを付ける –

関連する問題