Arhn - архитектура программирования

Захват живого аудиопотока MP3 в файл

Я пытаюсь разработать метод захвата живого аудиопотока MP3, то есть интернет-радио/Icecast или Shoutcast, и сохранения захваченного звука в файлах определенной длины, поэтому аудиофайл 1 час или аудиофайл 2 часа.

Я нашел что-то в этом потоке, используя bash и wget (Record Radio / аудиопоток (asx/asf) с веб-сервером), но я хочу создать более настраиваемый PHP-скрипт, который можно запускать с помощью задания cron.

Я решил использовать что-то вроде stream_get_contents(), но никогда раньше этим не пользовался.

Любые идеи?

Спасибо

22.10.2013

Ответы:


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

это создаст записи со следующими именами: record_000.asf, record_001.asf и т. д., а также файл журнала с выводом mplayers (на случай, если он вам понадобится). Я жестко запрограммировал период на 2 часа, но вы можете легко изменить это.

23.10.2013
  • Я наткнулся на это на сайте, но я ищу чисто PHP-решение проблемы, так как программное обеспечение безопасности, которое я запускаю на своих серверах, ограничивает bash. Кроме того, как чистое PHP-решение, его можно использовать в гораздо более крупном проекте. Спасибо, в любом случае :) 24.10.2013

  • 2

    PHP поддерживает аудиопротокол Ogg/Vorbis для потоковой передачи, как обсуждалось здесь и < href="http://www.sk89q.com/2010/04/introduction-to-php-streams/" rel="nofollow">здесь. Я подозреваю, что для работы с MP3 в потоке вам потребуется использовать stream_wrapper_register, получить доступ к таким файлам, как mp3://domain.com/myfile.mp3, и создать класс для обработки потока, как в примере на http://www.php.net/manual/en/function.stream-wrapper.-register.php#77055.

    22.10.2013
  • Спасибо, но уточните, я хочу захватить аудиопоток, а не аудиофайл. Я изменил вопрос, чтобы прояснить это. 24.10.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..