Автор Тема: Запись с радиостанций  (Прочитано 10561 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #15 : 14.10.2014 02:37:24 »
$ wget -O - http://trance.pure.fm > trance.pure.fm.mp3
Этот код в терминале вводишь и все? А как риппер подмостить к нему?

Команда захватывает поток и гонит в файл.
Эта команда не стримриппер, но выполняет одну из его функций: гнать поток в один файл.

В винде все просто винамп и риппер и все!! А здесь все коды шифры как в КГБ...

Конечно! Shell наше всё. Как два байта переслать! Начиная с ZX Spectrum.
Цитировать
$ wine ./wine_c/windows/system/cmd.exe
wine: Unhandled page fault on write access to 0x00957000 at address 0x7bc54e09 (thread 003b), starting debugger...
Версия Wine CMD 4.10.67766446 (1.7.4-eter1)

unix\home\user>c:
Цитировать
C:\>dir
Том на диске C не имеет метки.
Серийный номер тома 58ee-ad0b

Directory of C:\

28.04.2014     21:58             9  .windows-serial
17.09.2014      0:32  <DIR>         games
15.10.2014      0:55  <DIR>         Program Files
15.10.2014      0:54     2,633,439  streamripper-windows-installer-1.64.6.exe
28.04.2014     21:58  <DIR>         users
28.04.2014     22:00  <DIR>         windows
       2 files                2,633,448 bytes
       4 directories      2,542,129,152 bytes free
Цитировать
C:\>help     
Встроенные команды CMD:
ASSOC      Показывает или изменяет сопоставления типов файлов
ATTRIB      Показывает или изменяет DOS-атрибуты файла
...
Цитировать
C:\>chdir Program files\streamripper
Цитировать
C:\Program Files\Streamripper>dir
Том на диске C не имеет метки.
Серийный номер тома 58ee-ad0b

Directory of C:\Program Files\Streamripper

15.10.2014      0:55  <DIR>         .
15.10.2014      0:55  <DIR>         ..
31.03.2009      7:10        23,592  CHANGES
04.08.2001      9:00        18,321  COPYING
12.11.2005      1:34         1,004  fake_external_metadata.pl
12.11.2005      1:34         1,402  fetch_external_metadata.pl
31.03.2009      6:54        40,960  gen_sripper.dll
26.10.2008      5:13     2,592,349  libglib-2.0-0.dll
15.09.2008      3:12     1,465,925  libiconv-2.dll
15.09.2008      3:12       490,650  libintl-8.dll
31.12.2005     19:18        40,960  ogg.dll
08.03.2009     20:29         3,232  parse_rules.txt
08.03.2009     20:29        21,934  README
15.10.2014      0:55  <DIR>         Skins
20.06.2006      2:44         4,526  SRIPPER_HOWTO.TXT
31.03.2009      7:10       200,704  streamripper.dll
31.03.2009      7:10        24,576  streamripper.exe
08.03.2009     20:29         3,233  THANKS
21.04.2003     22:09       245,408  unicows.dll
15.10.2014      0:55        50,578  Uninstall.exe
31.12.2005     19:15     1,150,976  vorbis.dll
31.03.2009      7:11        69,632  wstreamripper.exe
27.11.2008      0:28        59,904  zlib1.dll
      20 files                6,509,866 bytes
       3 directories      2,542,075,904 bytes free
Цитировать
C:\Program Files\Streamripper>md stream
Цитировать
C:\Program Files\Streamripper>streamripper.exe http://fr.ah.fm:9000 -o never -T -d .\stream
Connecting...
stream: AH.FM - Leading Trance Radio
server name: SHOUTcast/Linux v1.9.8
declared bitrate: 192
meta interval: 32768

[skipping...   ] Somna - Somna Sessions 008 on AH.FM 13-10-2014 [  833kb]
fixme:console:CONSOLE_DefaultHandler Terminating process 2a on event 0
shutting downhost ~]$ [skipping...   ] Somna - Somna Sessions 008 on AH.FM 13-10-2014 [  865kb]
bye..
Цитировать
C:\Program files\Streamripper>TYPE SRIPPER_HOWTO.TXT|grep sourcefo
http://streamripper.sourceforge.net/faq.php
http://streamripper.sourceforge.net/tutorialconsole.php
http://streamripper.sourceforge.net/srskins.php
http://streamripper.sourceforge.net/ossupport.php

http://unxutils.sourceforge.net/
$ mplayer -softvol ~/wine_c/Program\ Files/Streamripper/stream/AH.FM\ -\ Leading\ Trance\ Radio/incomplete/Somna\ -\ Somna\ Sessions\ 008\ on\ AH.FM\ 13-10-2014.mp3
MPlayer 1.1-4.7.2 (C) 2000-2012 MPlayer Team
192 audio & 401 video codecs

Playing wine_c/Program Files/Streamripper/stream/AH.FM - Leading Trance Radio/incomplete/Somna - Somna Sessions 008 on AH.FM 13-10-2014.mp3.
Cache fill: 10.57% (886346 bytes)   

libavformat version 54.6.100 (internal)
Audio only file format detected.
Load subtitles in wine_c/Program Files/Streamripper/stream/AH.FM - Leading Trance Radio/incomplete/
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A:   4.3 (04.2) of 36.0 (36.0)  3.6% 9%

Преимущества консольного streamripper очевидны:
можно через cron заставить гнать поток на петабайтный винчестер.

А здесь все коды шифры как в КГБ...

Ну ё же моё!
Я же ссылки давал. Время тратил, искал.
Там рассказывается как сделать в VLC жмакокликом.
Но он гонит поток в один файл и в отличие от streamripper на треки не нарезает.
« Последнее редактирование: 14.10.2014 07:23:15 от Speccyfighter »

Оффлайн Xatxi1960

  • Давно тут
  • **
  • Сообщений: 227
  • Xatxi1960
    • Email
Re: Запись с радиостанций
« Ответ #16 : 14.10.2014 22:13:59 »
Не сердитесь на новичка .Я просто описал свои ассоциации после работы на Винде.Я не гуру .Мне было очень сложно даже подключить на P7 принтер, спасибо некоторым линуксоидам которые проявляли терепение на мои непонятные вопросы на их взгляд.Прошу прощения. Я как писал что хотел бы качать потоковое радио с инета. Подключать винамп и аимп мне пока сложно.На убунту стояла по умолчанию прога с радиоинетом правда выбор там станций оставляет желать лучшего. Меня интересуют два сайта как писал pure.fm и eradio.lv Eradio проводит через буферизацию на винде и использует родной винплеер.А с pure.fm используют примочку от сайта .Правда я не понял как ее использовать.Он тока открывает файл и проигрывает его пока не закроешь.В линуксе наверно все иначе.Потоковое радио ....А а в вашей сноске написано trance.pure.fm как я понимаю транс это разновидность клубной музыки .На сайте есть много направлений. На промоджи правда все удобно слушай и качай.Правда на пуре чаще музыка более свежа.Было бы удобней, если бы была бы  инструкция как записывать потоковое радио на форуме пошагово .Ведь новичку очень сложно сделать впервые.А вас мучить лишний раз неохота.... :-o

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #17 : 15.10.2014 02:11:12 »
Не сердитесь на новичка .Я просто описал свои ассоциации после работы на Винде.Я не гуру

Я не сержусь - мне лень делать кем-то уже сделанную работу, если мануал уже существует где-то на просторах сети, да и годы берут своё.
И отношу себя к старой школе и это наверное накладывает свой отпечаток.
Написал бы полностью хауту, если бы это потребовало адаптации к альту.
Когда-то давно встал вопрос: или я "сделаю" Линукс или он "сделает" меня. Поскольку на платфрме Спектрум последнее полностью исключается, "сделать" Линукс осталось без альтернатив - эго взыграло :-) Мануал по Junior, чтобы не терять время, читал не скажу где.

Меня интересуют два сайта как писал pure.fm и eradio.lv

eradio.lv

Например видим на титульной Europa Plus и винамповый значёк 128Kbit (нас интересует везде только он).
Как сделать в шелл?
В браузере наводим курсор на значёк (под ним ссылка на плейлист) и правой кнопкой мыши выбираем Сохранить объект как... Файл сохранится как файл 995.m3u и выглядит как:
$ cat 995.m3u
http://91.90.255.111:80/995

Проиграть его можно двумя способами, или как плейлист или как адрес потока:
$ mplayer -nocache -softvol -playlist ./995.m3u
$ mplayer -nocache -softvol http://91.90.255.111:80/995
Не забудьте, что mplayer по-умолчанию использует алса, и если у вас пульс, скажите mplayer использовать его (здесь через аудиокарту 0):
$ mplayer -nocache -softvol -ao pulse::0 http://91.90.255.111:80/995

Соотвественно чтобы сохранить поток, создаём каталог для сохранения захватываемых треков в домашнем каталоге:
$ mkdir $HOME/streams

Тогда команда для захвата треков будет выглядеть так:
$ streamripper http://91.90.255.111:80/995 -a Europa+.mp3 -d ~/streams/
Connecting...
stream: Europa+
server name: SHOUTcast/win32 v1.9.8
declared bitrate: 128
meta interval: 8192

[skipping...   ]  -  [  2,92M]
-a Europa+.mp3 - сохранять поток в файл Europa+.mp3
Почему команда именно такая?
Потому, что сервер транслирующий Europa+ не передаёт метаданные на каждую композицию и после команды захвата, трек будет без названия, если его не задать принудительно, и вечный skipping:
$ streamripper http://91.90.255.111:80/995 -o larger -T -d ~/streams/Connecting...
stream: Europa+
server name: SHOUTcast/win32 v1.9.8
declared bitrate: 128
meta interval: 8192

[skipping...   ]  -  [ 11,37M]
$ ls streams/Europa+/incomplete/
 - .mp3
Поэтому использовать нарезку при захвате этого потока бессмысленно.
Нарезать на треки придётся самостоятельно в audacity

Как сделать в GUI?
Теперь этот же поток в vlc
Установить vlc
# apt-get install vlc-maxi

Открыть vlc
Комбинацией клавиш Ctrl+L открыть плейлист.
Захватить курсором через левую кнопку мыши значёк винампа рядом с которым написана битность потока (это прямая ссылка на плейлист, о чём говорит всплывшая подсказка слева внизу браузера) и перетащить его в поле плейлиста.
В панели меню vlc:
Вид -> Доп. элементы управления
В панели vlc появятся элементы для записи.
Включаем воспроизведение потока и далее кнопку с красной точкой - Запись
Весь поток будет сохраняться в файл:
$ ls ~/|grep Eur
vlc-record-2014-10-16-00h01m43s-Europa+-.mp3


pure.fm

На титульной странице, слева вверху надпись:

LISTEN Click your genre and tune in!
Что в вольном переводе:
Выберите свой жанр и настройтесь!

Что делать в шелл?
Наводим в браузере курсор на надпись Trance - внизу подсказка h ttp://www.pure.fm/trance.m3u
Т.е. прямая ссылка на плейлист.
По правой кнопке мыши Сохранить объект как... сохраняя плейлист внутри которого адрес:
$ cat ./trance.m3u
#EXTM3U
#EXTINF:-1, (PURE.FM Trance)
http://trance.pure.fm

Этот адрес не содержит номера порта. И фактическ , в данном случае, не является истинным адресом трансляции потока.

Воспроизведение в шелл как и выше:
$ mplayer -nocache -softvol -playlist ./trance.m3u
$ mplayer -nocache -softvol http://trance.pure.fm

Этот поток уже передаёт метаданные на каждый трек (из вывода mplayer)
...
Starting playback...

ICY Info: StreamTitle='Allende - 98th Avenue 080 (Beach Classics)';StreamUrl='http://www.pure.fm';
A:  19.5 (19.5) of -0.0 (unknown)  3.4%
...
поэтому, если треки нужны только выборочно, есть смысл их нарезать при захвате потока - на каждый трек передаются метаданные.
Сайт зарубежный, сервер находится в USA, Tunkhannock - Пенсильвания
поэтому перекодировать метаданные нет необходимости при захвате потока и команда упрощается.
Особенность консольного проигрывателя mplayer в том, что он показывает ip-адрес и порт трансляции:
$ mplayer -nocache -softvol http://trance.pure.fm
MPlayer 1.1-4.7.2 (C) 2000-2012 MPlayer Team
192 audio & 401 video codecs

Playing http://trance.pure.fm.
Resolving trance.pure.fm for AF_INET...
Connecting to server trance.pure.fm[204.10.164.254]: 80...
Connecting to server 212.7.196.96[212.7.196.96]: 8010...
...

Этот адрес:порт необходим потому, что streamripper по этому адресу не может захватить поток:
$ streamripper http://trance.pure.fm -o never -T -d ~/streams/
Connecting...

error -10 [SR_ERROR_NO_RESPONSE_HEADER: Server is not a shoutcast stream]
bye..
shutting down

Поэтому обходим эту проблему взяв адрес-порт из mplayer, т.е. реальный адрес откуда транслируется поток (обратите внимание на последнюю строку вывода mplayer где содержится ip-адес:порт откуда транслируется поток - в плейлисте ресурс пытается скрыть истинный адрес трансляции - здесь трансляция потока идёт из Нидерландов):
$ streamripper http://212.7.196.96:8010 -o never -T -d ~/streams/
Connecting...
stream: Pure.FM Trance
server name: SHOUTcast/win32 v1.9.8
declared bitrate: 128
meta interval: 8192

[skipping...   ] Allende - 98th Avenue 080 (Beach Classics) [  1,51M]
Trance-композиции очень длинные, поэтому skipping будет длиться до тех пор, пока не начнется транляция следующего трека, который будет ripping.
Трек skipping останется в каталоге incomplete. Остальные полностью отрипленные будут в каталоге уровнем выше.

Что делать в vlc?
Действия те же как и описано выше:
Захватить мышкой надпись Trance которая является ссылкой на плейлист и бросить в поле плейлиста vlc.
Начать проигрывание и нажать кнопку Record для сохранения потока в файле.
Файл сохранится и будет дополняться до конца записи в домашнем каталоге:
$ ls ~/|grep Pure
vlc-record-2014-10-16-00h46m16s-Pure.FM Trance-Allende - 98th Avenue 080 (Beach Classics).mp3

Спойлер
Name   : Pure.FM Trance
Genre  : Trance
Website: http://www.pure.fm
Address stream: http://212.7.196.96:8010

Name   : Pure.FM Prog
Genre  : Progressive House
Website: http://www.pure.fm
Address stream: http://212.7.196.96:8000

Name   : Pure.FM Deep House
Genre  : deephouse
Website: http://www.pure.fm
Address stream: http://212.7.196.96:8002

Но на pure.fm с трансляцией всё-таки бардак.


Было бы удобней, если бы была бы  инструкция как записывать потоковое радио на форуме пошагово .Ведь новичку очень сложно сделать впервые.А вас мучить лишний раз неохота.... :-o

Вроде бы описал. Но если что, все мы рядом.
Проблема и относительная сложность риппинга потоков в том, что к каждому ресурсу требуется индивидуальный подход: своего рода анализ ситуации не нарушая ни чьих прав.
Которые вне зависимости от своих желаний надо уважать.
« Последнее редактирование: 15.10.2014 21:04:50 от Speccyfighter »

Оффлайн Xatxi1960

  • Давно тут
  • **
  • Сообщений: 227
  • Xatxi1960
    • Email
Re: Запись с радиостанций
« Ответ #18 : 15.10.2014 20:37:08 »
Огромное спасибо за мастер-класс! Пока не врубился во все это тока закачал через терминал VLC У меня ОС Симпли 7Х32 Что такое Shell так  не понял...В выходные буду грызть...ваш учебник.Хотел спросить на форуме сколько хранится тема открытая и закрытая? Я скачал по команде apt-get install VLC без maxi.Maxi  у меня не пошла почему-то. ;-)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 18 762
    • Домашняя страница
    • Email
Re: Запись с радиостанций
« Ответ #19 : 15.10.2014 20:43:31 »
Ограничений по хранению темы нет.
Андрей Черепанов (cas@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #20 : 15.10.2014 21:29:20 »
Огромное спасибо за мастер-класс!
..
У меня ОС Симпли 7Х32

Добавил в пост выше три скриншота vlc с поэтапно для риппинга.

Что такое Shell так  не понял...

Программная оболочка интерфейса пользователя командной строки запущенная в реальном терминале или псевдотерминале, - в меню XFCE опция Эмулятор терминала, - эмулятор терминала для X Window System. В дистрибутивах часто используется xterm (одноимённый пакет). Эмулятор терминала почти всегда поставляется в дистрибутивах.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #21 : 15.10.2014 22:47:23 »
Пока не врубился во все это ... ;-)

К сожалению все обёртки (фронтэнды) для streamripper под GUI мертвы (видно никому не надо).


StreamRipStar
фронтэнд для streamripper

Осталась одна живая обёртка, медленно, но развивающаяся, и под java:
http://sourceforge.net/projects/stripper/
http://sourceforge.net/projects/stripper/files/StreamRipStar0.6/0.6.8/
https://github.com/Eule/StreamRipStar
License: GNU General Public License version 2.0 (GPLv2)
Последний апдейт: 2014-04-08

Требует наличия streamripper и java:
$ rpm -qa|grep 'streamripp\|sun'|grep -v 'font\|plug'|sort
java-1.6.0-sun-1.6.0.26-alt7
streamripper-1.64.6-alt1
С учётом зависимостей, установка java-1.6.0-sun потребует ~117Mb дискового пространства.


Запуск фронтэнда StreamRipStar-0.6.8.jar (будет использовать установленный streamripper)
$ java -jar /путь/StreamRipStar-0.6.8.jar


Примечание для текущей версии StreamRipStar-0.6.9.jar от 2014-10-19

Возможно при старте вы получите сообщение:
$ java -jar StreamRipStar-0.6.9.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: misc/StreamRipStar : Unsupported major.minor version 51.0

Необходимо выяснить, какая версия требуется для старта фронтэнда:

http://en.wikipedia.org/wiki/Java_class_file
major version number of the class file format being used.
J2SE 8 = 52 (0x34 hex),
J2SE 7 = 51 (0x33 hex),
J2SE 6.0 = 50 (0x32 hex),
J2SE 5.0 = 49 (0x31 hex),
JDK 1.4 = 48 (0x30 hex),
JDK 1.3 = 47 (0x2F hex),
JDK 1.2 = 46 (0x2E hex),
JDK 1.1 = 45 (0x2D hex).
Из имеющегося, потребуется пакет java-1.7.0-openjdk из репозитория.
С учётом зависимостей, это потребует ~400Mb дискового пространства чтобы получить нужную версию java для StreamRipStar-0.6.9.jar:
$ java -version
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (ALTLinux-alt1_2.3.8.0jpp7-i586)
OpenJDK Client VM (build 23.7-b01, mixed mode)

Соответственно запуск текущей актуальной версии StreamRipStar-0.6.9.jar, аналогичен:
$ java -jar StreamRipStar-0.6.9.jar
Условие успешного запуска:
версия java не должна быть ниже той, в которой скомпиллирован StreamRipStar.


Настройка и риппинг на скриншотах.

Файл трека дополняется до полного в incomplete и переносится на уровень выше в каталог для готовых треков:
$ ls -R ./streams/1Mix\ Radio\ -\ Live\ shows\ and\ DJ\ sets\ from\ around\ the\ world\ -\ its\ all\ about\ Trance\ music../
./streams/1Mix Radio - Live shows and DJ sets from around the world - its all about Trance music../:
Aimoon @AimoonMusic - Perfect Euphoria On 1Mix Radio.. (15.10.2014) Check the Forums for Tracklisting...mp3
Akku @Akkumusic - Travel To Infinity's Adventure Episode 148.mp3
Akku @Akkumusic - Travel To Infinity's Adventure Episode 148 [Replay].mp3
incomplete
Thomas Westerman and Tom Oostink @thwto - Pure Trance Sessions on 1Mix Radio.. (15.10.2014) Check the Forums for Tracklisting...mp3
 - Welcome to 1Mix Radio.mp3

./streams/1Mix Radio - Live shows and DJ sets from around the world - its all about Trance music../incomplete:
Laura May @DjLauraMay - Pure Trance Sessions 156.mp3
Manuel Le Saux @ManuelLeSaux - Top Twenty Tunes on 1Mix Radio.. (15.10.2014) Follow me on Twitter #mlesaux.mp3


Первый скриншот:
Окно Options: Параметры и опции добавления потока
Вызывается:
- по опции Add в Панели меню (Добавить поток)
- в окне списка потоков на добавленном потоке правой кнопкой мыши во всплывшем меню опцией Options
- после выделения потока в главном окне списка потоков опцией меню:
Панель меню -> Stream -> Options

Вкладка File & write rules:

Basic options
Stream Name:
- Имя потока; будет использоваться как создаваемый подкаталог в главном каталоге для потоков
(Главный каталог для потоков:
Панель меню -> Preferences -> Audio and Programs ->General save for all streams )
Stream Address:
- http-адрес потока; часто как http://адрес:порт
Stream Website:
- Сайт потока
Stream Genre:
- Жанр потока (как: Транс, Диско, Рок и т.д.)

File settings
Save in single file:
- Сохранять в один файл
Max Lenght of the Rip [hh:MM:ss]:
- Максимальная длительность риппинга [часы:минуты:секунды]
Max size of file [MB]:
- Максимальный размер файла
Add sequence number to output filenames:
- Добавить к файлам порядковую нумерацию
Use a pattern to format the output file names:
- Использовать паттерн для формата имён файлов

Overwrite rules for 'complete'
Правила перезаписи для каталога готовых треков
Don't overwrite tracks in complete. Rename the old file instead:
- Не выполнять перезапись треков в каталоге для готовых треков
Ever overwrite tracks in 'complete':
- Всегда перезаписывать треки в каталоге для готовых треков (одноимённые)
Never overwrite tracks in 'complete':
- Никогда не перезаписывать треки в каталоге для готовых треков  (одноимённые)
Overwrite tracks in 'complete' when new track is larger then the old:
- Перезаписывать треки в 'complete'  когда новый трек больше старого (для одноимённых треков)

Other overwrite rules
Другие правила перезаписи
Truncate completed tracks in incomplete directory:
- Обрезать заполненные треки в каталоге для комплектующихся треков
Don't overwrite tracks in incomplete:
- Не перезаписывать треки в каталоге для комплектующихся треков
Don't create a directory for each stream:
- Не создать каталог для каждого потока
Don't create individual tracks:
- Не создавать индивидуальные треки


Предупреждение!
(Опция Preferences -> Audio and Programs -> Path to MP3-player)
Если используете консольный плеер, то запуск плеера должен быть через терминал:
xterm -e консольный_аудиоплеер [аргументы]
termit --execute  консольный_аудиоплеер [аргументы]
При нажатии кнопки Play Stream при выделенном потоке в StreamRipStar, откроется окно терминала в котором будет запущен консольный плеер воспроизводящий поток.

Иначе, если консольный плеер будет запущен напрямую не через терминал, вы рискуете получить массу процессов плеера, прибивать которые придётся через kill
(см. '/bin/kill --help')
« Последнее редактирование: 25.04.2015 10:00:11 от Speccyfighter »

Оффлайн Xatxi1960

  • Давно тут
  • **
  • Сообщений: 227
  • Xatxi1960
    • Email
Re: Запись с радиостанций
« Ответ #22 : 16.10.2014 19:04:12 »
СердСпасибо ...Чтобы я без вас делал!!! :-D ;-)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #23 : 17.10.2014 00:53:35 »
СердСпасибо ...Чтобы я без вас делал!!! :-D ;-)

Стрижка только начата (C) Популярный мультфильм многодесятилетней давности

Склейка mp3 аудиотреков

Здесь есть ещё один момент со stremripper'ом который нельзя не упомянуть.
Часто начало трека в транслируемом потоке содержит короткую рекламную вставку (например очень короткая рекламная вставка: "Музыка без остановки. Двадцать четыре часа в сутки. 1mix радио"), которая наложена на самое начало музыкального трека, начало, которое является завязкой музыкальной темы. streamripper в режиме нареки на треки вырежет эту рекламную вставку отдельным треком с названием композиции. Далее композиция будет идти отдельным треком с тем же названием, но с добавлением к имени файла [Replay]. Иногда логично склеить две этих части, чтобы не потерять завязку перед развитием темы. Но вот с этим-то и аллес.

Команды
cat 1.mp3 2.mp3 > out.mp3
cat name*.mp3 > out.mp3
в случае склейки двух частей одного трека не прокатывают, из-за того, что в месте склейки пауза в 250мс. В vlc она почти не заметна, но очень заметна в mplayer.

Склеить треки копированием без перекодирования
http://forum.altlinux.org/index.php/topic,10247.msg135580.html#msg135580
у меня тоже не получилось через avconv - mplayer останавливается в конце первого трека
ffmpeg -i audio1.mp3 -i audio.mp3 -acodec copy audio_out.mp3
ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

mp3wrap подойдёт для склейки готовых треков, но он не подходит для склейки отдельных треков, которые по-сути являются одним треком. Т.е. он не склеивает raw'ы в один массив.

Но нормально склейка проходит через avconv (одноимённый пакет) перекодированием,
$ avconv -y -i concat:Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3\|Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].out3.mp3

когда avconv убирает паузу в конце первого трека
...
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 -> libmp3lame)
Press ctrl-c to stop encoding
Header missingB time=15.78 bitrate= 192.2kbits/s   
Error while decoding stream #0:0
[mp3 @ 0x806b320] Header missing
Error while decoding stream #0:0
[mp3 @ 0x806b320] Header missing
Error while decoding stream #0:0
[mp3 @ 0x806b320] overread, skip -5 enddists: -2 -2
size=   85115kB time=3631.57 bitrate= 192.0kbits/s   
video:0kB audio:85115kB global headers:0kB muxing overhead 0.000346%

Формат команды
$ avconv -y -i concat:file1.mp3\|file2.mp3 output_file.mp3

Есть ещё один вариант склейки:
http://vitlav.blogspot.com/2011/04/mp3.html
Но он в альтах бажный, хоть и отрабатывает склейку:
$ vlc -I dummy -vvv --sout-keep 1.mp3 2.mp3 3.mp3 \
--sout '#gather:std{access=file,mux=raw,dst=foo.mp3}'

Суть бага в следующем:

Команда
$ vlc -I dummy -vvv --sout-keep Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3 Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 --sout '#gather:std{access=file,mux=raw,dst=Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out4.mp3}'

остановится секунды на полторы в конце последней строки (огромный вывод)
см. вложение vlc-glueing-1.txt

и продолжит работу остановившись окончательно и бесконечно после последней строки:
см. вложение vlc-glueing-2.txt

Прерывание по Ctrl+C (ни на что другое не реагирует).
После чего продолжив склейку закончит работу:
см. вложение vlc-glueing-3.txt

со следующим результатом:
$ ll Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240*
-rw-r--r-- 1 user user 87155147 окт 17 22:53 Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct
-rw-r--r-- 1 user user 86718527 окт 17 06:00 Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014] [Replay].mp3
-rw-r--r-- 1 user user   442348 окт 17 05:00 Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].mp3
Имя и расширение у результирующего файла обрезаны.

Но сам файл склеен хорошо и вполне себе проигрывается без паузы в месте склейки:
$ mplayer -nocache -softvol Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct
MPlayer 1.1-4.7.2 (C) 2000-2012 MPlayer Team
192 audio & 401 video codecs

Playing Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct.
libavformat version 54.6.100 (internal)
Audio only file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 44100 Hz, 2 ch, s16le, 192.0 kbit/13.61% (ratio: 24000->176400)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video

A:  24.6 (24.6) of 3631.0 ( 1:00:31.0)  3.2%

Exiting... (Quit)
Но придётся поправить имя файла и добавить расширение.

Вот такие вот дела...
« Последнее редактирование: 18.10.2014 06:25:49 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 9 842
Re: Запись с радиостанций
« Ответ #24 : 19.10.2014 03:48:03 »
Склейка mp3 аудиотреков: склейка через vlc

Проблема обрезки имени файла была в наличии запятой в имени файла для сохранения.
Результирующее имя файла dst= не должно содержать запятых:
$ vlc -I dummy -vvv --sout-keep \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3 \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 \
--sout '#gather:std{access=file,mux=raw,dst=./tmp/Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct 2014].out6.mp3}'
$ ls ./tmp/
Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct 2014].out6.mp3

Или при наличии запятых в имени результирующего файла, оно должно заключаться в кавычки, включая путь к нему, если он в наличии:
$ vlc -I dummy -vvv --sout-keep \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3 \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 \
--sout '#gather:std{access=file,mux=raw,dst="./tmp/Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3"}'
$ ls ./tmp/|grep out12
Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3

Или, все файлы (входящие/результирующий) в текущем каталоге:
$ vlc -I dummy -vvv --sout-keep \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3 \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 \
--sout '#gather:std{access=file,mux=raw,dst="Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3"}'
$ ls ./ |grep out12
Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3

Но не (!!!):
$ vlc -I dummy -vvv --sout-keep \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\].mp3 \
Danny\ Oh\ \@dannyoh\ -\ Trance\ Rendezvous\ Episode\ 240\ \[9th\ Oct\,\ 2014\]\ \[Replay\].mp3 \
--sout '#gather:std{access=file,mux=raw,dst=./tmp/"Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3"}'
чтобы не получить результат:
$ ls ./tmp/|grep out12|grep '"'
"Danny Oh @dannyoh - Trance Rendezvous Episode 240 [9th Oct, 2014].out12.mp3"

Единственный Ctrl+C придется нажать здесь на бесконечной паузе:
...
[0x805dd38] main playlist debug: nothing to play
^C[0x804e8c0] main libvlc debug: removing all interfaces
[0x804e8c0] main libvlc debug: exiting
...
« Последнее редактирование: 19.10.2014 06:48:09 от Speccyfighter »

Оффлайн Xatxi1960

  • Давно тут
  • **
  • Сообщений: 227
  • Xatxi1960
    • Email
Re: Запись с радиостанций
« Ответ #25 : 20.10.2014 19:56:36 »
Охх,молодец ....Будем осваивать :rolleyes: