Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将实时MP3音频流捕获到文件_Php_Bash_Audio_Streaming_Mp3 - Fatal编程技术网

Php 将实时MP3音频流捕获到文件

Php 将实时MP3音频流捕获到文件,php,bash,audio,streaming,mp3,Php,Bash,Audio,Streaming,Mp3,我正试图找到一种方法来捕获实时MP3音频流,即internet radio/Icecast或Shoutcast,并将捕获的音频保存在定义的文件长度中,即1小时音频文件或2小时音频文件 我使用bash和wget()在这个线程上发现了一些东西,但我想构建一个更可定制的PHP脚本,并且可以通过cron作业触发 我想使用stream\u get\u contents()之类的东西,但我以前从未使用过 有什么想法吗 谢谢PHP支持Ogg/Vorbis音频协议进行流媒体传输,如前所述。为了将MP3转换成流,

我正试图找到一种方法来捕获实时MP3音频流,即internet radio/Icecast或Shoutcast,并将捕获的音频保存在定义的文件长度中,即1小时音频文件或2小时音频文件

我使用bash和wget()在这个线程上发现了一些东西,但我想构建一个更可定制的PHP脚本,并且可以通过cron作业触发

我想使用stream\u get\u contents()之类的东西,但我以前从未使用过

有什么想法吗


谢谢

PHP支持Ogg/Vorbis音频协议进行流媒体传输,如前所述。为了将MP3转换成流,我怀疑您需要使用该函数,访问文件,如
MP3://domain.com/myfile.MP3
,并创建一个类来处理流,如中的示例。

这是我已经使用了一段时间的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
这将生成具有以下名称的录制 记录_000.asf 记录_001.asf 等 还有一个带有mplayers输出的日志文件(以备需要)。
我已将时段硬编码为2小时,但您可以轻松更改。

谢谢,但我希望捕获音频流,而不是音频文件流。我已经修改了这个问题来澄清这一点。我确实在网站上遇到过这个问题,但我正在寻找一个纯粹的PHP解决方案来解决这个问题,因为我在服务器上运行的安全软件限制了bash。作为一个纯粹的PHP解决方案,它也可以应用到更大的项目中。无论如何,谢谢你:)