ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

liquidsoap

 

6245
Тарас @tarasian666
наверно что то лишнее в PACKAGES так как у меня этого не требует

  1. # Edit this file by (un)commenting the libraries that you (don't) want to
  2. # build in order to get the corresponding features in liquidsoap.
  3. # The default file has every dependency enabled.
  4. # It is certain that you don't need everything.
  5. # If you don't know why you should have something, uncomment it,
  6. # especially if it does not build for some reason.
  7. # It is useless to add savonet packages that are not listed below,
  8. # like ocaml-fetch, ocaml-smbclient, etc. These are not dependencies of
  9. # liquidsoap.
  10. # ============================================================================
  11. # Input/output
  12. # ============================================================================
  13. # Cry is the lib for streaming to icecast and compatible servers.
  14. ocaml-cry
  15. # AO is portable and stable, but it does only output.
  16. #ocaml-ao
  17. # Portaudio is a portable audio library with both input and output.
  18. #ocaml-portaudio
  19. # ALSA is only for LINUX, and is sometimes not working.
  20. #ocaml-alsa
  21. # PulseAudio is a cross-plateform audio sound server. It is intended to
  22. # be a single replacement for sound support under linux, windows or OSX.
  23. #ocaml-pulseaudio
  24. # JACK is an audio connection kit, designed for low latency
  25. # and easy communication between audio applications.
  26. ocaml-bjack
  27. # Gstreamer is a library for constructing graphs of media-handling components.
  28. # It is currently used to provide V4l inputs for liquidsoap
  29. #ocaml-gstreamer
  30. # ============================================================================
  31. # Codecs
  32. # ============================================================================
  33. # MAD is for MP3 decoding.
  34. ocaml-mad
  35. # TAGLIB is for MP3 ID3 tag reading
  36. ocaml-taglib
  37. # LAME is for MP3 encoding.
  38. ocaml-lame
  39. # AACPLUS is for AAC+ encoding.
  40. ocaml-aacplus
  41. # OGG is for ogg/vorbis and ogg/theora encoding and decoding
  42. ocaml-ogg
  43. # VORBIS is for ogg/vorbis encoding and decoding.
  44. # you need ocaml-ogg to enable ocaml-vorbis.
  45. ocaml-vorbis
  46. # SPEEX is for ogg/speex encoding and decoding
  47. # you need ocaml-ogg to enable ocaml-speex
  48. #ocaml-speex
  49. # THEORA is for ogg/theora encoding and decoding
  50. # you need ocaml-ogg to enable ocaml-theora
  51. #ocaml-theora
  52. # SCHROEDINGER is for ogg/dirac encoding and decoding
  53. # you need ocaml-ogg to enable ocaml-schroedinger
  54. #ocaml-schroedinger
  55. # VOAACENC is for AAC encoding.
  56. #ocaml-voaacenc
  57. # FAAD for AAC decoding.
  58. ocaml-faad
  59. # FLAC is for flac, native and/or ogg (if using ocaml-ogg)
  60. # format decoding and encoding.
  61. ocaml-flac
  62. # ============================================================================
  63. # Sound processing
  64. # ============================================================================
  65. # LADSPA are audio plugins providing sound effects
  66. #ocaml-ladspa
  67. # SoundTouch is for changing pitch and tempo of sound
  68. #ocaml-soundtouch
  69. # Samplerate is for having better quality resampling
  70. ocaml-samplerate
  71. # ============================================================================
  72. # Video processing
  73. # ============================================================================
  74. # GAVL converts from and to many formats,
  75. # is very efficient and has a quality setting for
  76. # tweaking load vs. quality of the conversion.
  77. # It is the recommended module to use with video
  78. #ocaml-gavl
  79. # ============================================================================
  80. # Sound synthesis
  81. # ============================================================================
  82. # DSSI is a standard for synthesizer plugins
  83. #ocaml-dssi
  84. # ============================================================================
  85. # Various modules
  86. # ============================================================================
  87. # Xmlplaylist allow support for various xml format, such as rss, podcast, etc..
  88. ocaml-xmlplaylist
  89. # Lastfm allow support for lastfm radios and the audioscrobbler protocol
  90. # It should be listed *after* ocaml-xmlplaylist in this file
  91. ocaml-lastfm
  92. # A library supporting the OSC protocol to have external controls
  93. # such as faders
  94. #ocaml-lo
  95. # ============================================================================
  96. # Finally, the mandatory lib dtools, duppy and liquidsoap...
  97. # ============================================================================
  98. ocaml-dtools
  99. ocaml-duppy
  100. ocaml-mm
  101. liquidsoap

0
48
Amelion @Amelion
Народ последний патч супа, 2 недели не падает -полёт нормально.
хм тока терь диджея не подключить вот эта штука не работает:
# live radio
set("harbor.bind_addr","0.0.0.0")
set("harbor.port",xxxx)
set("harbor.password","xxxx")

def live_start(header) =
log("got live source, starting relays..")
ignore(execute("stream_relay.start"))
ignore(execute("archives.start"))
end

def live_stop() =
log("live source has gone, stoping relays..")
ignore(execute("stream_relay.stop"))
ignore(execute("archives.stop"))
end

live = input.harbor(id="live",on_connect=live_start,on_disconnect=live_stop,"dj")

плиз кто сталкивался?

0
6245
Тарас @tarasian666
а если так

  1. set("harbor.bind_addr","0.0.0.0")
  2. # Some code...
  3. # This defines a source waiting on mount point
  4. # /test-harbor
  5. live = input.harbor("test-harbor",port=8080,password="xxx")
  6. # This is the final stream.
  7. # Uses the live source as soon as available,
  8. # and don't wait for an end of track, since
  9. # we don't want to cut the beginning of the live
  10. # stream.
  11. #
  12. # You may insert a jingle transition here...
  13. radio = fallback(track_sensitive=false,
  14. [live,files])

0
48
Amelion @Amelion
tarasian666

Да так-то оно подключается, но опять приходим к тому что каждые 4-ре секунды врывается музыка из основного расписания.

0
6245
Тарас @tarasian666
а насколько "далеко" liquidsoap от подключаемого клиента к harbor ?

у меня все локально (кроме сервера) и такого нет

0
48
Amelion @Amelion
330 км))) лано тоже попробую с локалки на праздниках буду поближе)) отпишусь, спасибо!

0
6245
Тарас @tarasian666
ну это еще не много )
знаю люди подключались за тысячи километров и ниче, но только у кого инет страдал то там бывало такое

0
67
nivs @nivs
Нашёл время и опять добрался до liquidsoap'a... Собрал из исходников, заимел проблемы, но о них потом как-нибудь. Пока такой вопрос: как вы подготавливаете контект для эфира? Какие критерии? Формат, битрейт, кодировка, на чём и какая версия крутится и так далее...

0
6245
Тарас @tarasian666
критерии - битрейт не меньше битрейта вещания,

формат любой что поддерживает liquidsoap,

кодировка - какая попадется, вещает в любом случае но может не показывать в плеере, в последнее время перекодирую все в utf-8

debian squeeze, Liquidsoap 1.0.0+scm (default@cf69a68fb866:20120414:203005)

0
67
nivs @nivs
Wav, видимо, не поддерживает. Ура, всё запустилось, спасибо за помощь! Допилю конфиг и выложу для всеобщего употребления, но позже.

Некоторые треки очень тихо играют. Можно ли как-то увеличить громкость воспроизведение этих треков (консольным звуковым редактором или напрямую из liquidsooap)?

И ещё один нелепый вопрос)) Можно ли как-то вот это убожество сократить?)
  1.  
  2. radio = switch(track_sensitive = true,
  3. [
  4. ({0h0m0s-0h0m5s}, clock_0),
  5. ({0h0m5s-1h0m0s}, ev),
  6. ({1h0m0s-1h0m5s}, clock_1),
  7. ({1h0m5s-2h0m0s}, ev),
  8. ({2h0m0s-2h0m5s}, clock_2),
  9. ({2h0m5s-3h0m0s}, ni),
  10. ({3h0m0s-3h0m5s}, clock_3),
  11. ({3h0m5s-4h0m0s}, ni),
  12. ({4h0m0s-4h0m5s}, clock_4),
  13. ({4h0m5s-5h0m0s}, ni),
  14. ({5h0m0s-5h0m5s}, clock_5),
  15. ({5h0m5s-6h0m0s}, ni),
  16. ({6h0m0s-6h0m5s}, clock_6),
  17. ({6h0m5s-7h0m0s}, mo),
  18. ({7h0m0s-7h0m5s}, clock_7),
  19. ({7h0m5s-8h0m0s}, mo),
  20. ({8h0m0s-8h0m5s}, clock_8),
  21. ({8h0m5s-9h0m0s}, mo),
  22. ({9h0m0s-9h0m5s}, clock_9),
  23. ({9h0m5s-10h0m0s}, da),
  24. ({10h0m0s-10h0m5s}, clock_10),
  25. ({10h0m5s-11h0m0s}, da),
  26. ({11h0m0s-11h0m5s}, clock_11),
  27. ({11h0m5s-12h0m0s}, da),
  28. ({12h0m0s-12h0m5s}, clock_12),
  29. ({12h0m5s-13h0m0s}, da),
  30. ({13h0m0s-13h0m5s}, clock_13),
  31. ({13h0m5s-14h0m0s}, da),
  32. ({14h0m0s-14h0m5s}, clock_14),
  33. ({14h0m5s-15h0m0s}, da),
  34. ({15h0m0s-15h0m5s}, clock_15),
  35. ({15h0m5s-16h0m0s}, da),
  36. ({16h0m0s-16h0m5s}, clock_16),
  37. ({16h0m5s-17h0m0s}, da),
  38. ({17h0m0s-17h0m5s}, clock_17),
  39. ({17h0m5s-18h0m0s}, da),
  40. ({18h0m0s-18h0m5s}, clock_18),
  41. ({18h0m5s-19h0m0s}, da),
  42. ({19h0m0s-19h0m5s}, clock_19),
  43. ({19h0m5s-20h0m0s}, ev),
  44. ({20h0m0s-20h0m5s}, clock_20),
  45. ({20h0m5s-21h0m0s}, ev),
  46. ({21h0m0s-21h0m5s}, clock_21),
  47. ({21h0m5s-22h0m0s}, ev),
  48. ({22h0m0s-22h0m5s}, clock_22),
  49. ({22h0m5s-23h0m0s}, ev),
  50. ({23h0m0s-23h0m5s}, clock_23),
  51. ({23h0m5s-0h0m0s}, ev)

cloc_* - вставочки каждый час... Для каждого часа своя вставка. Длительность около 7 секунд.

Отредактировано nivs - 27.04.2012
0
6245
Тарас @tarasian666
можно включить компрессор но если очень тихий звук сильно он не поможет или будет искажать те треки что погромче

такое сократить врядли удастсья

0
67
nivs @nivs
Лучше выиискивать треки поодиночке и увеличивать звук в них

0
67
nivs @nivs
Часто бывает так, что поток есть, но он пуст... Он чего это может быть? Причём довольно сложно уловить причину, как-то оно рандомно немного происходит. Папки все заполнены...
Выплёвывает иногда такое, но вне зависимости от этих строк треки не проигрываются и, напротив, могут эти строки присутствовать, а песенки играть. :
  1. $ ./start_radio
  2. TagLib: ID3v2.4 no longer supports the frame type TDAT. It will be discarded from the tag.
  3. TagLib: MPEG::Header::parse() -- Invalid sample rate.

В логах добавление песен происходит успешно, окончание такое: (log.level = 4)
  1. 2012/04/30 00:03:37 [metadata.ogg:4] Invalid file extension for "/home/nivs/radio/collection/efir/daytime/jingles/Jingle_2.mp3"!
  2. 2012/04/30 00:03:37 [jingles(dot)3:4] Remaining: 0.0s, queued: 0.0s, adding: 30.0s (RID 43)
  3. 2012/04/30 00:03:37 [Radio_320:3] Connection setup was successful.
  4. 2012/04/30 00:03:37 [Radio_256:3] Connecting mount Radio_256 for source@radio.spbstu.ru...
  5. 2012/04/30 00:03:37 [Radio_256:3] Connection setup was successful.
  6. 2012/04/30 00:03:37 [Radio_192:3] Connecting mount Radio_192 for source@radio.spbstu.ru...
  7. 2012/04/30 00:03:37 [Radio_192:3] Connection setup was successful.
  8. 2012/04/30 00:03:37 [Radio_128:3] Connecting mount Radio_128 for source@radio.spbstu.ru...
  9. 2012/04/30 00:03:37 [Radio_128:3] Connection setup was successful.
  10. 2012/04/30 00:03:37 [Radio_64:3] Connecting mount Radio_64 for source@radio.spbstu.ru...
  11. 2012/04/30 00:03:37 [Radio_64:3] Connection setup was successful.
  12. 2012/04/30 00:03:37 [threads:3] Created thread "wallclock_main" (1 total).
  13. 2012/04/30 00:03:37 [clock:4] Main phase starts.
  14. 2012/04/30 00:03:37 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
  15. 2012/04/30 00:03:37 [mksafe:3] Switch to safe_blank.
  16. 2012/04/30 00:03:37 [safe_blank:4] Activations changed: static=[mksafe:Radio_320:Radio_320], dynamic=[mksafe:Radio_320:Radio_320].
  17. 2012/04/30 00:03:37 [mksafe:3] Switch to safe_blank.
  18. 2012/04/30 00:03:37 [safe_blank:4] Activations changed: static=[mksafe:Radio_256:Radio_256], dynamic=[mksafe:Radio_256:Radio_256].
  19. 2012/04/30 00:03:37 [mksafe:3] Switch to safe_blank.
  20. 2012/04/30 00:03:37 [safe_blank:4] Activations changed: static=[mksafe:Radio_192:Radio_192], dynamic=[mksafe:Radio_192:Radio_192].
  21. 2012/04/30 00:03:37 [mksafe:3] Switch to safe_blank.
  22. 2012/04/30 00:03:37 [safe_blank:4] Activations changed: static=[mksafe:Radio_128:Radio_128], dynamic=[mksafe:Radio_128:Radio_128].
  23. 2012/04/30 00:03:37 [mksafe:3] Switch to safe_blank.
  24. 2012/04/30 00:03:37 [safe_blank:4] Activations changed: static=[mksafe:Radio_64:Radio_64], dynamic=[mksafe:Radio_64:Radio_64].


в конфиге mksafe применяется в самом конце, при выходе. Ещё раз подчеркну, что с одинаковым конфигом может и запуститься и не запуститься одинаково.

___

Скорее всего это какие-то баги со звуковой подсистемой. Я под виртуалкой сидел, поставил основной системой - всё отлично.

Отредактировано nivs - 30.04.2012
0
67
nivs @nivs
В общем, если у кого вышеописанная проблема - тишина в эфире при запуске - то лично у меня была беда с кодировкой тегов, python-mutagen помог.

Отредактировано nivs - 04.05.2012
0
67
nivs @nivs
Вроде как последняя проблема - иногда вылезает
  1. TagLib: MPEG::Header::parse() -- Invalid sample rate.
Гугл сазал, что это опасно но не сказал, что же с этим делать. У кого-нибудь попадалось такое?

0
223
Игорь @devilben
nivs пишет:

Вроде как последняя проблема - иногда вылезает
  1. TagLib: MPEG::Header::parse() -- Invalid sample rate.
Гугл сазал, что это опасно но не сказал, что же с этим делать. У кого-нибудь попадалось такое?


Это не критично и является багой самой TagLib а не жидкого мыла, по крайней мере сами разработчики так говорят. У меня частенько оно в логах фигурирует.

Отредактировано devilben - 04.05.2012
0
67
nivs @nivs
Ну и ладушки тогда... Можно и отдохнуть...

0
67
nivs @nivs
И снова здравствуйте... Чёрта с два вышло решить проблему с отсутствием звука в потоке, так же не понятно, почему иногда всё же работает хорошо. Мысль о том, что виноваты теги, таки абсурдна. Зато удалось найти конфигурацию, при которой 100% нет музыки в потоке:
  1. #!/usr/local/bin/liquidsoap
  2. set("log.file.path","/home/nivs/projects/radio/technical/liquidsoap.log")
  3. set("log.level", 8)
  4. clock = single("/home/nivs/projects/radio/collection/clock/jingleT_17.mp3")
  5. mus_da = playlist("/home/nivs/projects/radio/collection/efir/test")
  6. radio = switch(track_sensitive = false, [
  7. ({13h0m0s - 19h57m8s}, mus_da),
  8. ({19h57m0s - 19h57m8s}, clock),
  9. ({19h57m8s - 13h0m0s}, mus_da)])
  10. radio = crossfade(start_next = 3., fade_out = 2., fade_in = 1., radio)
  11. output.icecast(
  12. %mp3(bitrate = 192),
  13. mount = "Radio_192",
  14. user = "source",
  15. password = "hackme",
  16. mksafe(radio)
  17. )


Есои убрать switch и заменить на обычный поток - всё хорошо. Если убрать crossfade - тоже всё хорошо. Но мне нужно и то и то...
Манипуляции с атрибутами crossfade ни к чему не привели, замена на smart_crossfade тоже.

20 последних строк лога без crossfade (музыка есть):
  1. 2012/05/08 20:01:24 [Radio_192:4] Enabling caching mode: active source.
  2. 2012/05/08 20:01:24 [Radio_192:3] Connecting mount Radio_192 for source@localhost...
  3. 2012/05/08 20:01:24 [decoder.mp3:4] Libmad recognizes "/home/nivs/projects/radio/collection/efir/test/Finger Eleven - Paralyzer.mp3" as MP3 (layer III, 224kbps, 44100Hz, 2 channels).
  4. 2012/05/08 20:01:24 [decoder:3] Method "MP3" accepted "/home/nivs/projects/radio/collection/efir/test/Finger Eleven - Paralyzer.mp3".
  5. 2012/05/08 20:01:24 [metadata.flac:4] Invalid file extension for "/home/nivs/projects/radio/collection/efir/test/Finger Eleven - Paralyzer.mp3"!
  6. 2012/05/08 20:01:24 [metadata.ogg:4] Invalid file extension for "/home/nivs/projects/radio/collection/efir/test/Finger Eleven - Paralyzer.mp3"!
  7. 2012/05/08 20:01:24 [test:4] Remaining: 0.0s, queued: 0.0s, adding: 30.0s (RID 2)
  8. 2012/05/08 20:01:25 [Radio_192:3] Connection setup was successful.
  9. 2012/05/08 20:01:25 [threads:3] Created thread "wallclock_main" (1 total).
  10. 2012/05/08 20:01:25 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
  11. 2012/05/08 20:01:25 [clock:4] Main phase starts.
  12. 2012/05/08 20:01:25 [mksafe:3] Switch to safe_blank.
  13. 2012/05/08 20:01:25 [safe_blank:4] Activations changed: static=[mksafe:Radio_192:Radio_192], dynamic=[mksafe:Radio_192:Radio_192].
  14. 2012/05/08 20:01:25 [test:4] Remaining: 0.0s, queued: 30.0s, taking: 30.0s
  15. 2012/05/08 20:01:25 [test:3] Prepared "/home/nivs/projects/radio/collection/efir/test/Finger Eleven - Paralyzer.mp3" (RID 2).
  16. 2012/05/08 20:01:25 [mksafe:3] Switch to switch_4604 with transition.
  17. 2012/05/08 20:01:25 [safe_blank:4] Activations changed: static=[], dynamic=[mksafe:Radio_192:Radio_192].
  18. 2012/05/08 20:01:25 [switch_4604:4] Activations changed: static=[mksafe:Radio_192:Radio_192], dynamic=[mksafe:Radio_192:Radio_192].
  19. 2012/05/08 20:01:25 [switch_4604:3] Switch to test.
  20. 2012/05/08 20:01:25 [test:4] Activations changed: static=[switch_4604:mksafe:Radio_192:Radio_192], dynamic=[switch_4604:mksafe:Radio_192:Radio_192, switch_4604:mksafe:Radio_192:Radio_192].


20 последних строк лога с crossfade (музыки нет):
  1. 2012/05/08 20:01:53 [decoder:4] Trying method "MP3" for "/home/nivs/projects/radio/collection/efir/test/Keane - Somewhere Only We Know.mp3"...
  2. 2012/05/08 20:01:53 [safe_blank:4] Content kind is {audio=2;video=0;midi=0}.
  3. 2012/05/08 20:01:53 [safe_blank:4] Activations changed: static=[], dynamic=[mksafe:Radio_192:Radio_192].
  4. 2012/05/08 20:01:53 [mksafe:4] Activations changed: static=[Radio_192:Radio_192], dynamic=[].
  5. 2012/05/08 20:01:53 [test:5] Queue is empty!
  6. 2012/05/08 20:01:53 [test:5] Failed to prepare track: no file.
  7. 2012/05/08 20:01:53 [Radio_192:4] Activations changed: static=[Radio_192], dynamic=[].
  8. 2012/05/08 20:01:53 [decoder.mp3:4] Libmad recognizes "/home/nivs/projects/radio/collection/efir/test/Keane - Somewhere Only We Know.mp3" as MP3 (layer III, 192kbps, 44100Hz, 2 channels).
  9. 2012/05/08 20:01:53 [Radio_192:4] Enabling caching mode: active source.
  10. 2012/05/08 20:01:53 [decoder:3] Method "MP3" accepted "/home/nivs/projects/radio/collection/efir/test/Keane - Somewhere Only We Know.mp3".
  11. 2012/05/08 20:01:53 [metadata.flac:4] Invalid file extension for "/home/nivs/projects/radio/collection/efir/test/Keane - Somewhere Only We Know.mp3"!
  12. 2012/05/08 20:01:53 [metadata.ogg:4] Invalid file extension for "/home/nivs/projects/radio/collection/efir/test/Keane - Somewhere Only We Know.mp3"!
  13. 2012/05/08 20:01:53 [Radio_192:3] Connecting mount Radio_192 for source@localhost...
  14. 2012/05/08 20:01:53 [test:4] Remaining: 0.0s, queued: 0.0s, adding: 30.0s (RID 2)
  15. 2012/05/08 20:01:53 [Radio_192:3] Connection setup was successful.
  16. 2012/05/08 20:01:53 [threads:3] Created thread "wallclock_main" (1 total).
  17. 2012/05/08 20:01:53 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
  18. 2012/05/08 20:01:53 [clock:4] Main phase starts.
  19. 2012/05/08 20:01:53 [mksafe:3] Switch to safe_blank.
  20. 2012/05/08 20:01:53 [safe_blank:4] Activations changed: static=[mksafe:Radio_192:Radio_192], dynamic=[mksafe:Radio_192:Radio_192].


Что я делаю не так?

И ещё маленький вопрос - где можно прочитать о том, как надо читать документацию с сайта? В смысле, как расшифровать всякие " (['a],['a])->['a] " , " (([(string*string)])->source('a))->source('a)" и проч. ? С английским беда, офсайт исследовал - не заметил.

0
6245
Тарас @tarasian666
switch както криво используется и он скорей не понимает что от него хотят
осавить только {19h57m0s - 19h57m8s}, clock и добавить дефолтный плейлист

всякие " (['a],['a])->['a] " , " (([(string*string)])->source('a))->source('a)" и проч. я тоже не читаю )

0
67
nivs @nivs
Но switch-то без crossfade нормально работает

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.