1

Тема: Запись Icecast и Shoutcast

Здравствуйте. Стоит задача записывать аудио поток в файл по средствам php.

Но, как всегда есть одно маленькое но... Мне нужно записывать эфир с периодичностью в 10 минут и чтобы эти файлы при склеивании звучали непрерывно.

Самый простой способ записать поток:

$src = fopen('http://www.example.com', 'r');
$dest1 = fopen('song.mp3', 'w');

stream_copy_to_stream($src, $dest1, 1024);

Но, этот вариант запишет только 1024 байт и остановиться... А как записать по времени?

Заранее благодарен!

2

Re: Запись Icecast и Shoutcast

на пальцах вариант 1
while (начальное врменя + 10минут  <= текущего времени)
{
stream_copy_to_stream($src, $dest1, 1024);
}
вариант 2 в зависимости от битрейта можно аожно посчитать количество бит в 10ти минутах и
stream_copy_to_stream($src, $dest1, просчитаное количество бит);


возможно появятся еще варианты )

3

Re: Запись Icecast и Shoutcast

пишет tarasian666:

на пальцах вариант 1
while (начальное врменя + 10минут  <= текущего времени)
{
stream_copy_to_stream($src, $dest1, 1024);
}
вариант 2 в зависимости от битрейта можно аожно посчитать количество бит в 10ти минутах и
stream_copy_to_stream($src, $dest1, просчитаное количество бит);


возможно появятся еще варианты )

Спасибо за ответ. 1 вариант хороший, но цикл занимает время и при склеивании файлов будет искажение звука...

А по поводу 2 варианта, битрейт не переменный?

4

Re: Запись Icecast и Shoutcast

желательно постоянный, хотя может и с переменным получится если просчитать среднее арифметичное но тогда и куски могут быть не 10 минут а + -

5

Re: Запись Icecast и Shoutcast

пишет tarasian666:

желательно постоянный, хотя может и с переменным получится если просчитать среднее арифметичное но тогда и куски могут быть не 10 минут а + -

Остановился на Вашем 1 варианте.

Вот что у меня получилось:

$start = microtime(true);

while(true) {
 if ((float)(microtime(true) - $start) > 600)
   {
 break;
    }
stream_copy_to_stream($src, $dest1, 1024);
}

Получается на 2-3 секунды дольше, но зато работает и файл без искажений!!!))))

Спасибо!!!