Аудиокниги в радиоэфире. Выдирание потокового аудио


Картинка для
привлечения
внимания :)

Озаботился поиском аудиоматериалов на эстонском. Живую речь по радио слушать пока еще очень тяжело, хотя и попадаются интересные передачи. Есть, кстати, великолепное приложение для Windows под названием ScreamerRadio, которое позволяет слушать любое интернет-радио, да еще и записывать эфир в mp3. Но для начала, прежде чем запрыгивать на уровень понимания радиоэфира, хотелось бы послушать чего-нибудь более размеренного, литературного. Попытался поискать аудиокниги, но их в свободном доступе оказалось удручающе мало.

Но оказалось, что на некоторых радиостанциях регулярно читают отрывки из книжек. Более того, на сайте национального телерадиовещания ERR есть архив передач нескольких радиостанций, где можно посмотреть программу передач за любой прошедший день и прослушать запись любой из них. Некоторые можно даже тут же скачать, но фрагменты книг к таковым, к сожалению, не относятся. Но их можно послушать - и это уже очень хорошо. Красота: залез в архив, нашел нужную книжку, запустил и слушаешь через Bluetooth-наушники, бродя по квартире.

Впрочем, в какой-то момент мне захотелось детально разобрать один фрагмент, в процессе чего мне нужно было регулярно возвращаться назад, чтобы прослушивать непонятные места снова и снова. Так вот: я задолбался кликать по нужному месту слайдера онлайн-плеера, чтобы отмотать запись чуть назад! То ошибаешься на несколько десятков секунд (которые на слайдере соответствуют паре пикселей), то вообще мимо слайдера промахиваешься. Обычно в хорошем аудиоплеере можно перескакивать на несколько секунд назад или вперед нажатиями кнопок "влево" и "вправо" соответственно на клавиатуре - но плеер на сайте ERR по этим кнопкам прыгает сразу на две минуты, что меня никак не устраивало.

В общем, снова встала проблема сохранения потоковых медиаданных, как несколько лет назад, с мультиком "Pitt and Kantrop". Использованные там методы уже неактуальны, поэтому пришлось начинать все сначала.

Пробовал разные плагины для Хрома - ничего не подошло Пробовал специальный браузер Torch, в который встроен некий Media Downloader - тоже бесполезно. Попытался сам расковырять структуру документа, нашел в медиаплеере ссылку на URL, начинающийся на "rtmp://". Полез читать про протокол RTMP, набрел на приблуду RTMPDump. Не сработало. Нашел интерактивное приложение StreamCapture, сделанное на основе RTMPDump - опять мимо.

Решение нашлось совершенно неожиданно. Я где-то раскопал инструкцию, утверждающую, будто плеер VLC умеет скачивать RTMP-потоки. После всех опробованных средств верилось с трудом, но все равно на всякий случай попробовал, благо VLC у меня стоит. На удивление все получилось - пусть в "реальном времени", то есть двадцатиминутная аудиозапись качается двадцать минут, но хоть так.

Кому интересно, делюсь пошаговой инструкцией. Не гарантирую, что оно будет работать везде, но с сайтом ERR вполне получилось.

  1. Открываем страничку, на которой открыт плеер с нужной аудиозаписью, и открываем инспектор структуры документа. В любом современном браузере он вызывается по кнопке F12. Жмем Ctrl+F и ищем строчку "rtmp://"*. Извлекаем фрагмент строчки, который начинается на "rtmp://" и заканчивается именем файла - заодно и узнаем тип файла, который собираемся скачивать (в нашем случае M4A):
    finding-rtmp-url.png
  2. Копируем полученную строчку в буфер, открываем VLC, идем в меню "Медиа - Открыть URL...", вставляем туда скопированный адрес, выбираем действие "Поток":
    vlc-step-1.png
  3. Галочка "Воспроизводить локально" по умолчанию снята. Как я понял, если ее установить, то в процессе сдирания файла он будет еще и проигрываться. Жмем "Добавить" напротив строчки "Новое назначение - Файлы":
    vlc-step-2.png
  4. Указываем файл, в который хотим сохранить выдранный поток:
    vlc-step-3.png
  5. На что влияют установки на этой страничке, я не очень понял. Галочку "Включить перекодирование" я пробовал снимать, пробовал оставлять - без разницы. Профиль на всякий случай выбрал соответствующий формату потока: "Audio - MP3 (MP4)".
    vlc-step-4.png
  6. Собственно, все. После этого плеер начинает неторопливо перекачивать поток в указанный файл, который впоследствии можно будет воспроизвести любым аудиоплеером.

Есть у этого подхода и пара ощутимых недостатков:

  • За несколько секунд до окончания процесс прекращается. Если закрыть плеер, буфер сбрасывается, но последних пары секунд все равно недостает. Кстати, в маковской версии VLC этой проблемы нет.
  • Звук получается чуть "хрипящий" - то ли при перекодировании какие-то частоты режутся, то ли надо еще дополнительно какой-то фильтр наложить. Не знаю, не разбирался. Оно, в общем, не смертельно, хотя и неприятно немножко.

* Update. В нынешней версии плеера строчка по "rtmp://" больше не ищется - теперь все URL не содержат названия протокола и начинаются на "://" - например, "://media.err.ee:80/arhiiv/@/AUDIO/a_28203_RMARHIIV.m4a". Так что я теперь ищу по строчке "m4a", а "rtmp" дописываю в начало вручную перед тем, как скормить VLC-плееру.