捕获实时MP3音频流到文件

时间:2013-10-22 15:00:28

标签: php bash audio streaming mp3

我正在尝试制作一种捕获实时MP3音频流的方法,即网络电台/ Icecast或Shoutcast,并将捕获的音频保存为定义的文件长度,因此1小时音频文件或2小时音频文件。

我使用bash和wget(Record radio / audio stream (asx/asf) with a webserver)在这个线程上找到了一些东西,但是我想构建一个更可自定义的PHP脚本,我可以通过cron job触发。

我想使用像stream_get_contents()这样的东西,但我以前从未使用过它。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

这是我已经使用了一段时间的bash脚本

#!/bin/bash                                                                                                                                                                           

ls *asf &> /dev/null                                                            
if [[ $? -eq 0 ]]; then                                                         
    CNT=$(ls *asf | tail -1 | perl -p -i -e 's/recording_0*(\d*).*/$1/');  
else                                                                            
    CNT=0;                                                                      
fi                                                                              

while true; do                                                                  
    NAME=recording_$(printf "%03d" $CNT);                                  
    if [[ -f $NAME.asf ]]; then                                                 
        CNT=$[ $CNT + 1 ];                                                      
        continue;                                                               
    fi                                                                          
    echo "recording $NAME";                                                     
    mplayer "http://your.stream.goes.here" -dumpstream -dumpfile $NAME.asf &> $NAME.log &
    sleep 2h;                                                                   
    killall mplayer;                                                            
    CNT=$[ $CNT + 1 ];                                                          
done

这将产生具有以下名称的录音 recording_000.asf recording_001.asf 等等 还有一个带mplayers输出的日志文件(如果你需要的话)。 我把这段时间硬编码到2小时,但你可以很容易地改变它。

答案 1 :(得分:0)

PHP支持用于流媒体的Ogg / Vorbis音频协议,如herehere所述。为了将MP3工作到流中,我怀疑您需要使用stream_wrapper_register函数,访问mp3://domain.com/myfile.mp3之类的文件,并创建一个类来处理流,就像http://www.php.net/manual/en/function.stream-wrapper-register.php#77055中的示例一样