Linux - запись потокового аудио (стрима) через консоль. На примере "Радио России"

Категория: Linux
Дата публикации: 24 июня, 2013 - 08:28
Последнее изменение: 12 марта, 2015 - 20:19

Чтобы записать потоковое аудио, на примере сайта "Радио России", будем использовать mplayer. Все команды приведены для Debian.

1. Устанавливаем mplayer

apt-get install mplayer

2. Устанавливаем утилиту screen, которая позволит запускать параллельно сколько угодно ssh-сессий в пределах одного подключения к серверу. Википедия описывает ее более умными словами "GNU Screen — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким сессиям в рамках одной сессии. Это полезно для работы с несколькими программами из командной строки, а также для запуска программ на удаленном сервере."

apt-get install screen

3. Далее нужно получить ссылку на файл с расширением asf потокового аудио. Я возьму его с сайта "Радио России", например передачи "Неизвестная Планета". За иконкой скрывается новое окно, в котором должен по идее открываться Windows Media Player и проигрывать аудио. У меня на Windows 7 этого плеера, по какой-то причине нету, но он, собственно и не нужен. Открываем исходный код окна (горячие клавиши "CTRL+U"), видим нужную ссылку.

4. Соединяемся по ssh к серверу, открываем новую сессию командой "screen", жмем "enter".

5. При помощи нехитрой команды начинаем писать поток к файл

mplayer mms://audio.rfn.ru/radiorus/audio/209/957/4.asf -dumpstream -dumpfile dump.mp3

6. Теперь можно временно отключиться от screen-окна, оставив ее работать в фоне. Для этого нужно знать следующие горячие клавиши:

Ctrl+A затем «c» — создать окно screen
Ctrl+A затем «p» — переключиться к предыдущему окну screen
Ctrl+A затем «n» — переключиться к следующему окну screen
Ctrl+A затем «d» — отключиться от screen оставив сеансы работающими
Ctrl+D — выйти из всех сеансов screen
Ctrl+A затем «H» — записывать в журнал

За команды спасибо сайту itblog.su. Сейчас используем команду выделенную жирным.

7. Через какое-то время (в зависимости от того, сколько времени длится ваше аудио, которое вы пишите) снова подключаемся к screen-окну. Для этого сначала выводим список всех открытых сессий

root@hosted:~# screen -ls
There is a screen on:
        11527.pts-0.hosted      (06/24/2013 09:24:39 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

root@hosted:~#

Затем подключаемся к нужному окну

root@hosted:~# screen -r 11527.pts-0.hosted

8. Если запись удачно завершена, то будет выведена примерно такая инфрмация

Core dumped ;)

Exiting... (End of file)

Теперь немного теории - зачем можно использовать такой вариант граббинга потокового аудио, ведь можно тоже самое записать на Windows, тем же Aimp'ом или VLC-плеером.
Причина проста - VPS или дедик работает условно 24 часа в сутки (не беру в расчет сбои, перезагрузки), и если нужно записать, ну хотя-бы 50-100 таких вот потоков, то вручную это сущая нудятина и ад. В консоли же, достаточно будет написать элементарный bash-скрипт, который все сделает сам. Например, назовем его dumper.sh и поместим туда на каждую строку по команде, которую уже рассмотрели выше:

mplayer mms://audio.rfn.ru/radiorus/audio/207/725/8.asf -dumpstream -dumpfile 1.mp3
mplayer mms://audio.rfn.ru/radiorus/audio/205/558/8.asf -dumpstream -dumpfile 2.mp3
mplayer mms://audio.rfn.ru/radiorus/audio/203/529/4.asf -dumpstream -dumpfile 3.mp3
mplayer mms://audio.rfn.ru/radiorus/audio/201/541/4.asf -dumpstream -dumpfile 4.mp3

Запускаем

sh dumper.sh

Теперь отключаемся от screen и снова занимаемся своими делами, пока mplayer пишет потоки. Что неудобного в таком варианте массовой записи:

1. по умолчанию пишется в один поток, то есть записался первый файл, пошел второй, за ним третий. Конечно, можно запустить 10 bash-скриптов в 10 screen-ах.
2. после завершения записи стримов у вас на сервере окажется N-ное количество mp3 файлов, в которых придется как-то разбираться, чтобы понять какой файл в какому потому относится. Либо заранее составлять себе список, что "1.mp3 - программа такая-то, 100.mp3 - другая".
3. качество записи, увы, чаще всего оставляет желать лучшего. 32 или 64 килобита битрейт. Хотя, уверен, что если поискать, то можно найти потоки в лучшем качестве.

Используемые материалы:
empegbbs.com

Добавить комментарий