Advertisement
Guest User

123

a guest
Mar 14th, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. #!/usr/local/bin/liquidsoap
  2.  
  3. # мета
  4. out = output.icecast(
  5. host = "pool.akigami.ru",
  6. port = 8585,
  7. user = "source",
  8. password = "1337akisource",
  9. name = "Akigami.Radio",
  10. genre = "Anime",
  11. url = "http://akigami.ru",
  12. encoding = "UTF-8"
  13. )
  14.  
  15. # функция crossfade
  16. def crossfade(~start_next,~fade_in,~fade_out,s)
  17. s = fade.in(duration=fade_in,s)
  18. s = fade.out(duration=fade_out,s)
  19. fader = fun (a,b) -> add(normalize=false,[b,a])
  20. cross(fader,s)
  21. end
  22.  
  23. # функция компрессии и нормализации
  24. def nrj(s)
  25. compress(
  26. threshold=-2.0,
  27. attack=6.5,
  28. release=3.0,
  29. ratio=2.0,
  30. gain=0.0,
  31. knee=3.0,
  32. normalize(s)
  33. )
  34. end
  35.  
  36. # метадата жсон
  37. meta = ref []
  38. def update_meta(m) =
  39. m = list.remove_assoc("metadata_block_picture", m)
  40. file_path = m["filename"]
  41. duration = string_of(file.duration(file_path))
  42. m = list.add(("duration", string_of(duration)), m)
  43. system('/usr/bin/nodejs /akigami/rcontroller/next.js next &')
  44. #log("#{dur}")
  45. recode = string.recode(out_enc="UTF-8")
  46. def f(x) =
  47. (recode(fst(x)),recode(snd(x)))
  48. end
  49. meta := list.map(f,m)
  50. end
  51. radio = on_metadata(update_meta,radio)
  52. def get_meta(~protocol,~data,~headers,uri) =
  53. m = !meta
  54. http_response(
  55. protocol=protocol,
  56. code=200,
  57. headers=[("Content-Type","application/json; charset=utf-8")],
  58. data=json_of(m)
  59. )
  60. end
  61.  
  62. #пёрлхарбор
  63. set("harbor.bind_addr","0.0.0.0")
  64. harbor.http.register(port=7000,method="GET","/getmeta",get_meta)
  65.  
  66. #set("log.stdout", true)
  67. # сокеты
  68. #set("server.socket",true)
  69. #set("server.socket.path","/home/user/socket.sock")
  70. #телнет
  71. set("server.telnet.bind_addr","127.0.0.1")
  72. set("server.telnet",true)
  73. set("server.telnet.port",1234)
  74. #шоэто
  75. set("audio.converter.samplerate.libsamplerate.quality","best")
  76.  
  77. # абсолютный путь к рабочей директории
  78. wd = "/radio"
  79.  
  80. # техническая папка
  81. tech = "#{wd}/logs"
  82.  
  83. # логи
  84. set("log.file.path","#{tech}/liquidsoap.log") # путь к файлу лога
  85. set("log.level", 3) # уровень логирования
  86.  
  87. # загружаем плейлисты, джинглы, вставки, программы
  88. muz_pl = playlist ("#{wd}/scripts/disk.playlist.txt", mode = "normal", reload_mode="watch")
  89. #muz_pl = playlist (reload = 3600, "#{wd}/scripts/disk.playlist.txt", reload_mode="watch")
  90.  
  91. # убираем тишину в треках
  92. radio = mksafe(muz_pl)
  93.  
  94. # добавляем crossfade
  95. radio = crossfade(start_next=3., fade_out=1.5, fade_in=1.5, radio)
  96.  
  97. # преамп и нормализация
  98. radio = nrj(radio)
  99.  
  100. # запускаем вещалки с разным качеством
  101. out(
  102. %vorbis(
  103. samplerate=44100,
  104. channels=2,
  105. quality=0.8
  106. ),
  107. description = "Vorbis 44k .8Q",
  108. mount = "ar.ogg",
  109. mksafe(radio)
  110. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement