out = output.icecast( host = "127.0.0.1", port = 8000, user = "dj", password = "test", name = "Test name", encoding = "UTF-8" ) wd = "C:/Users/Administrator/Desktop" pl = "#{wd}/dreamsoundstation" tech = "#{pl}/technical" set("log.file.path","#{tech}/liquidsoap.log") set("log.level", 3) promo_dir = "#{pl}/promo" ef = "#{pl}/efir" ni = "#{ef}/night" mo = "#{ef}/morning" da = "#{ef}/daytime" ev = "#{ef}/evening" mus_ni_dir = "#{ni}/music" mus_mo_dir = "#{mo}/music" mus_da_dir = "#{da}/music" mus_ev_dir = "#{ev}/music" jin_ni_dir = "#{ni}/jingles" jin_mo_dir = "#{mo}/jingles" jin_da_dir = "#{da}/jingles" jin_ev_dir = "#{ev}/jingles" mus_ni = playlist (reload = 360, "#{mus_ni_dir}") mus_mo = playlist (reload = 360, "#{mus_mo_dir}") mus_da = playlist (reload = 360, "#{mus_da_dir}") mus_ev = playlist (reload = 360, "#{mus_ev_dir}") jin_ni = playlist (reload = 360, "#{jin_ni_dir}") jin_mo = playlist (reload = 360, "#{jin_mo_dir}") jin_da = playlist (reload = 360, "#{jin_da_dir}") jin_ev = playlist (reload = 360, "#{jin_ev_dir}") promo = playlist (reload = 360, "#{promo_dir}") ins_ni = rotate (weights = [2, 1], [jin_ni, promo]) ins_mo = rotate (weights = [2, 1], [jin_mo, promo]) ins_da = rotate (weights = [2, 1], [jin_da, promo]) ins_ev = rotate (weights = [2, 1], [jin_ev, promo]) ni = rotate (weights = [3, 1], [mus_ni, ins_ni]) mo = rotate (weights = [3, 1], [mus_mo, ins_mo]) da = rotate (weights = [3, 1], [mus_da, ins_da]) ev = rotate (weights = [3, 1], [mus_ev, ins_ev]) radio = switch (track_sensitive = true, [ ({ 0h - 6h }, ni), ({ 6h - 12h }, mo), ({ 12h - 18h }, da), ({ 18h - 0h }, ev) ]) radio = crossfade(start_next=1., fade_out=1., fade_in=1., radio) out( %mp3(bitrate = 320, id3v2 = true), description = "MP3 320 Kbps", mount = "main", mksafe(radio) )
2015/06/20 00:47:07 >>> LOG START 2015/06/20 00:47:07 [protocols.external:3] Didn't find "ufetch". 2015/06/20 00:47:07 [protocols.external:3] Didn't find "wget". 2015/06/20 00:47:07 [main:3] Liquidsoap 1.0.1-win32 2015/06/20 00:47:07 [main:3] Using: graphics=[distributed with Ocaml] pcre=0.1.0 dtools=0.3.0 duppy=0.4.2 cry=0.2.2 mm=0.2.0 xmlplaylist=0.1.3 lastfm=0.3.0 ogg=0.4.3 vorbis=0.6.1 speex=0.2.0 mad=0.4.4 flac=0.1.1 flac.ogg=0.1.1 dynlink=[distributed with Ocaml] lame=0.3.1 aacplus=0.2.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.4 ao=0.2.0 taglib=0.2.0 camomile=0.8.1 faad=0.3.0 yojson=1.0.2 2015/06/20 00:47:07 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master. 2015/06/20 00:47:07 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples. 2015/06/20 00:47:07 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks. 2015/06/20 00:47:07 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks. 2015/06/20 00:47:07 [threads:3] Created thread "generic queue #1". 2015/06/20 00:47:07 [threads:3] Created thread "generic queue #2". 2015/06/20 00:47:07 [music:3] Loading playlist... 2015/06/20 00:47:07 [music:3] Playlist is a directory. 2015/06/20 00:47:07 [music:3] Successfully loaded a playlist of 31 tracks. 2015/06/20 00:47:07 [jingles:3] Loading playlist... 2015/06/20 00:47:07 [jingles:3] Playlist is a directory. 2015/06/20 00:47:07 [jingles:3] Got an empty list: keeping the old one. 2015/06/20 00:47:07 [promo:3] Loading playlist... 2015/06/20 00:47:07 [promo:3] Playlist is a directory. 2015/06/20 00:47:07 [promo:3] Got an empty list: keeping the old one. 2015/06/20 00:47:07 [music:3] Loading playlist... 2015/06/20 00:47:07 [music:3] Playlist is a directory. 2015/06/20 00:47:07 [music:3] Successfully loaded a playlist of 20 tracks. 2015/06/20 00:47:07 [jingles:3] Loading playlist... 2015/06/20 00:47:07 [jingles:3] Playlist is a directory. 2015/06/20 00:47:07 [jingles:3] Got an empty list: keeping the old one. 2015/06/20 00:47:07 [music:3] Loading playlist... 2015/06/20 00:47:07 [music:3] Playlist is a directory. 2015/06/20 00:47:07 [music:3] Successfully loaded a playlist of 41 tracks. 2015/06/20 00:47:07 [jingles:3] Loading playlist... 2015/06/20 00:47:07 [jingles:3] Playlist is a directory. 2015/06/20 00:47:07 [jingles:3] Got an empty list: keeping the old one. 2015/06/20 00:47:07 [music:3] Loading playlist... 2015/06/20 00:47:07 [music:3] Playlist is a directory. 2015/06/20 00:47:07 [music:3] Successfully loaded a playlist of 42 tracks. 2015/06/20 00:47:07 [jingles:3] Loading playlist... 2015/06/20 00:47:07 [jingles:3] Playlist is a directory. 2015/06/20 00:47:07 [jingles:3] Got an empty list: keeping the old one. 2015/06/20 00:47:07 [main:3] Connecting mount main for dj@127.0.0.1... 2015/06/20 00:47:07 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/evening/music/08 Never Strangers.mp3". 2015/06/20 00:47:07 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/daytime/music/07 - Smile when you smile.mp3". 2015/06/20 00:47:07 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/morning/music/05 - Pooma - January.mp3". 2015/06/20 00:47:07 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/night/music/01 Machine.mp3". 2015/06/20 00:47:07 [main:3] Connection setup was successful. 2015/06/20 00:47:07 [threads:3] Created thread "wallclock_main" (1 total). 2015/06/20 00:47:07 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock. 2015/06/20 00:47:07 [mksafe:3] Switch to safe_blank. 2015/06/20 00:55:27 [main:3] Shutdown started! 2015/06/20 00:55:27 [main:3] Waiting for threads to terminate... 2015/06/20 00:55:27 [main:3] Closing connection... 2015/06/20 00:55:27 [clock.wallclock_main:3] Streaming loop stopped. 2015/06/20 00:55:27 [threads:3] Thread "wallclock_main" terminated (0 remaining). 2015/06/20 00:55:27 [main:3] Cleaning downloaded files... 2015/06/20 00:55:27 >>> LOG END
2015/06/22 16:13:33 >>> LOG START 2015/06/22 16:13:33 [protocols.external:3] Didn't find "ufetch". 2015/06/22 16:13:33 [protocols.external:3] Didn't find "wget". 2015/06/22 16:13:33 [main:3] Liquidsoap 1.0.1-win32 2015/06/22 16:13:33 [main:3] Using: graphics=[distributed with Ocaml] pcre=0.1.0 dtools=0.3.0 duppy=0.4.2 cry=0.2.2 mm=0.2.0 xmlplaylist=0.1.3 lastfm=0.3.0 ogg=0.4.3 vorbis=0.6.1 speex=0.2.0 mad=0.4.4 flac=0.1.1 flac.ogg=0.1.1 dynlink=[distributed with Ocaml] lame=0.3.1 aacplus=0.2.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.4 ao=0.2.0 taglib=0.2.0 camomile=0.8.1 faad=0.3.0 yojson=1.0.2 2015/06/22 16:13:33 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master. 2015/06/22 16:13:33 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples. 2015/06/22 16:13:33 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks. 2015/06/22 16:13:33 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks. 2015/06/22 16:13:33 [threads:3] Created thread "generic queue #1". 2015/06/22 16:13:33 [threads:3] Created thread "generic queue #2". 2015/06/22 16:13:33 [music:3] Loading playlist... 2015/06/22 16:13:33 [music:3] Playlist is a directory. 2015/06/22 16:13:33 [music:3] Successfully loaded a playlist of 31 tracks. 2015/06/22 16:13:33 [music:3] Loading playlist... 2015/06/22 16:13:33 [music:3] Playlist is a directory. 2015/06/22 16:13:33 [music:3] Successfully loaded a playlist of 20 tracks. 2015/06/22 16:13:33 [music:3] Loading playlist... 2015/06/22 16:13:33 [music:3] Playlist is a directory. 2015/06/22 16:13:33 [music:3] Successfully loaded a playlist of 41 tracks. 2015/06/22 16:13:33 [music:3] Loading playlist... 2015/06/22 16:13:33 [music:3] Playlist is a directory. 2015/06/22 16:13:33 [music:3] Successfully loaded a playlist of 42 tracks. 2015/06/22 16:13:33 [main:3] Connecting mount main for dj@127.0.0.1... 2015/06/22 16:13:33 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/evening/music/07 Lingonberry.mp3". 2015/06/22 16:13:33 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/morning/music/01 - Pooma - If May Starts Tomorrow.mp3". 2015/06/22 16:13:33 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/night/music/05 Fjords.mp3". 2015/06/22 16:13:33 [decoder:3] Method "MAD" accepted "C:/Users/Administrator/Desktop/dreamsoundstation/efir/daytime/music/09 - Exploding head.mp3". 2015/06/22 16:13:33 [main:3] Connection setup was successful. 2015/06/22 16:13:33 [threads:3] Created thread "wallclock_main" (1 total). 2015/06/22 16:13:33 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock. 2015/06/22 16:13:33 [mksafe:3] Switch to safe_blank.
2015/06/22 16:13:33 [mksafe:3] Switch to safe_blank.
OpenSuse 13.2 x64
checking for a BSD-compatible install... /usr/bin/install -c checking that calling user is not root... configure: error: configure script must not be run with root user!
2015/06/28 01:14:57 >>> LOG START 2015/06/28 01:14:57 [protocols.external:3] Didn't find "ufetch". 2015/06/28 01:14:57 [protocols.external:3] Found "/usr/bin/wget". 2015/06/28 01:14:57 [main:3] Liquidsoap 1.0.1 2015/06/28 01:14:57 [main:3] Using: graphics=[distributed with Ocaml] pcre=6.2.5 dtools=0.3.0 duppy=0.4.2 duppy.syntax=0.4.2 cry=0.2.2 mm=0.2.0 xmlplaylist=0.1.3 lastfm=0.3.0 ogg=0.4.3 vorbis=0.6.1 speex=0.2.0 mad=0.4.4 flac=0.1.1 flac.ogg=0.1.1 dynlink=[distributed with Ocaml] lame=0.3.1 gstreamer=0.1.0 voaacenc=0.1.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.4 bjack=0.1.3 alsa=0.2.1 ao=0.2.0 samplerate=0.1.1 taglib=0.2.0 magic=0.7.3 camomile=0.8.4 faad=0.3.0 soundtouch=0.1.7 portaudio=0.2.0 pulseaudio=0.1.2 ladspa=0.1.4 dssi=0.1.0 sdl=0.9.0 camlimages=4.0.0 lo=0.1.0 yojson=1.0.3 gd=1.0a5 2015/06/28 01:14:57 [dynamic.loader:3] Loaded dynamic aacplus encoder from /usr/lib/ocaml/aacplus 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/flac.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/cry.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/voaacenc.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/mad.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/faad.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/pulseaudio.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/lame.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/ogg.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/taglib.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/vorbis.cmxs. 2015/06/28 01:14:57 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.0.1/plugins/flac_ogg.cmxs. 2015/06/28 01:14:57 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master. 2015/06/28 01:14:57 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples. 2015/06/28 01:14:57 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks. 2015/06/28 01:14:57 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks. 2015/06/28 01:14:57 [decoder:3] Method "MAD" accepted "/home/radio/music/jingls/02.mp3". 2015/06/28 01:14:57 [single:3] "/home/radio/music/jingls/02.mp3" is static, resolving once for all...
#!/etc/liquidsoap -d set("init.daemon",true) set("init.daemon.pidfile",false) set("log.file.path","/var/log/liquidsoap/basic.log") set("log.stdout",true) set("log.level",3) pathToSocket="/etc/liquidsoap/liquidsoap.pid"; set("server.socket",true); set("server.socket.path",pathToSocket); set("server.socket.permissions",511) def crossfade_live(a,b) add(normalize=false, [ sequence([ blank(duration=6.), fade.initial(duration=10.,b) ]), fade.final(duration=8.,a) ]) end def transition(j,a,b) add(normalize=false, [ fade.initial(b), sequence(merge=true, [blank(duration=1.),j,fallback([])]), fade.final(a) ]) end def get_djsilere() = uri = get_process_output("php /home/radio/scripts/request.php /home/radio/music/djsilere") # К запросу добавили имя папки с радиошоу print("next track: #{uri}") request.create(uri) end def get_alexnegniy() = uri = get_process_output("php /home/radio/scripts/request.php /home/radio/music/alexnegniy") # К запросу добавили имя папки с радиошоу print("next track: #{uri}") request.create(uri) end myplaylist = mksafe(playlist(reload=360, '/home/radio/music/nonstop/')) radio = myplaylist radio = mksafe(radio) djsilere = request.dynamic(id="djsilere",length=10.,get_djsilere) alexnegniy = request.dynamic(id="alexnegniy",length=10.,get_alexnegniy) jingle = single("/home/radio/music/jingls/02.mp3") # Джингл radio = switch([ ({0h-20h and 22h-23h}, radio), ({3w1h25m-3w2h25m}, djsilere), ({4w21h-4w22h}, alexnegniy) ]) radio = smart_crossfade(start_next=3.,fade_out=2.,fade_in=2.,width=2.,conservative=false,radio) url = "http://localhost:8000/live" input = mksafe(input.http(url)) out = fallback(track_sensitive=false, transitions=[ crossfade_live, transition(jingle) ],[input, radio]) out = fallback(track_sensitive=false,[strip_blank(length=10.,threshold=-50.,radio) , out ]) # На случай тишины в эфире output.icecast(%mp3(bitrate=256, samplerate = 44100, stereo = true), host = "localhost", port = 8000, name="EDM Radio 256 Kbit/s", genre="Elecrtonic", url="http://edmradio.ru/", description="Electronic Dance Music Radio", password = "hackme", mount = "/autodj", out)
Didn't find "ufetch".
Artist - Title 1.mp3 Artist - Title 2.mp3 Artist - Title 3.mp3 и т. д.