liquidsoap
play

Liquidsoap Audio & Video Streaming Language 1 / 73 What is - PowerPoint PPT Presentation

Liquidsoap Audio & Video Streaming Language 1 / 73 What is Liquidsoap? 2 / 73 What is Liquidsoap? A language to create audio and video streams 3 / 73 What is Liquidsoap? A language to create audio and video streams myplaylist =


  1. Liquidsoap Audio & Video Streaming Language 1 / 73

  2. What is Liquidsoap? 2 / 73

  3. What is Liquidsoap? A language to create audio and video streams 3 / 73

  4. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) 4 / 73

  5. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) Programming tools to help the user 5 / 73

  6. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) Programming tools to help the user Verifications of specific properties (i.e. "Can this source fail?") 6 / 73

  7. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) Programming tools to help the user Verifications of specific properties (i.e. "Can this source fail?") At line 5, char 8-49: Error 7: Invalid value: That source is fallible 7 / 73

  8. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") security = single("~/radio/sounds/default.mp3") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) radio = fallback(track_sensitive = false, [radio, security]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) Programming tools to help the user Verifications of specific properties (i.e. "Can this source fail?") At line 5, char 8-49: Error 7: Invalid value: That source is fallible 8 / 73

  9. What is Liquidsoap? A language to create audio and video streams myplaylist = playlist("~/radio/music.m3u") jingles = playlist("~/radio/jingles.m3u") security = single("~/radio/sounds/default.mp3") radio = myplaylist radio = random(weights = [1, 4],[jingles, radio]) radio = fallback(track_sensitive = false, [radio, security]) output.icecast(%mp3, host = "localhost", port = 8000, password = "hackme", mount = "basic-radio", radio) Programming tools to help the user Verifications of specific properties (i.e. "Can this source fail?") At line 5, char 8-49: Error 7: Invalid value: That source is fallible Static typing catered for its users (source media content, unused variables, etc..) 9 / 73

  10. What is Liquidsoap? A language to create audio and video streams Dedicated time predicates: 1w12h 10 / 73

  11. What is Liquidsoap? A language to create audio and video streams Dedicated time predicates: 1w12h switch([ ({ 20h-22h30 }, prime_time), ({ 1w }, monday_source), ({ (6w or 7w) and 0h-12h }, week_ends_mornings), ({ true }, default_source) ]) 11 / 73

  12. What is Liquidsoap? A language to create audio and video streams Dedicated time predicates: 1w12h switch([ ({ 20h-22h30 }, prime_time), ({ 1w }, monday_source), ({ (6w or 7w) and 0h-12h }, week_ends_mornings), ({ true }, default_source) ]) ... 12 / 73

  13. A little history.. Founded in 2003 by David Baelde and Samuel Mimram 13 / 73

  14. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 14 / 73

  15. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 Originally a studet project at Ecole Normale Supérieure de Lyon 15 / 73

  16. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 Originally a studet project at Ecole Normale Supérieure de Lyon Purpose was to stream the music shared on the local SAMBA (windows) network to listen to music while coding 16 / 73

  17. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 Originally a studet project at Ecole Normale Supérieure de Lyon Purpose was to stream the music shared on the local SAMBA (windows) network to listen to music while coding Features: Indexing of shared music files, IRC bot with user-requests & Icecast streaming output 17 / 73

  18. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 Originally a studet project at Ecole Normale Supérieure de Lyon Purpose was to stream the music shared on the local SAMBA (windows) network to listen to music while coding Features: Indexing of shared music files, IRC bot with user-requests & Icecast streaming output Creating a new language emerged as part of the school's expected student project 18 / 73

  19. A little history.. Founded in 2003 by David Baelde and Samuel Mimram Savonet: SAm and daVid Ocaml NETwork 🙃 Originally a studet project at Ecole Normale Supérieure de Lyon Purpose was to stream the music shared on the local SAMBA (windows) network to listen to music while coding Features: Indexing of shared music files, IRC bot with user-requests & Icecast streaming output Creating a new language emerged as part of the school's expected student project OCaml! 19 / 73

  20. The liquidsoap language 20 / 73

  21. The liquidsoap language Scripting language 21 / 73

  22. The liquidsoap language Scripting language Functional language 22 / 73

  23. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) 23 / 73

  24. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types 24 / 73

  25. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types source(audio=2, video=0, midi=0) 25 / 73

  26. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types source(audio=2, video=0, midi=0) (..., format('a), source('a)) -> source('a) 26 / 73

  27. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types source(audio=2, video=0, midi=0) (..., format('a), source('a)) -> source('a) Labels and optiomal parameters 27 / 73

  28. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types source(audio=2, video=0, midi=0) (..., format('a), source('a)) -> source('a) Labels and optiomal parameters def my_function (?optional_arg, ~labeled_arg, arg1, arg2) = ... end 28 / 73

  29. The liquidsoap language Scripting language Functional language input.harbor(on_connect=callback, ...) Static & inferred types source(audio=2, video=0, midi=0) (..., format('a), source('a)) -> source('a) Labels and optiomal parameters def my_function (?optional_arg, ~labeled_arg, arg1, arg2) = ... end my_function(arg1, arg2, labeled_arg="foo", optional_arg=123) my_function(arg1, arg2, labeled_arg="foo") 29 / 73

  30. The liquidsoap language Scripting language: Self-documented 30 / 73

  31. The liquidsoap language Scripting language: Self-documented % liquidsoap -h input.srt Start a SRT agent in listener mode to receive and decode a stream. Type: (?id : string, ?bind_address : string, ?clock_safe : bool, ?content_type : string, ?dump : string, ?max : float, ?messageapi : bool, ?on_connect : ((unit) -> unit), ?on_disconnect : (() -> unit), ?payload_size : int, ?port : int) -> source('a) Category: Source / Input Parameters: * id : string (default: "") Force the value of the source ID. * bind_address : string (default: "0.0.0.0") Address to bind on the local machine. ... 31 / 73

  32. Some common features 32 / 73

  33. Some common features Large set of supported audio and video codecs 33 / 73

  34. Some common features Large set of supported audio and video codecs I/O 34 / 73

  35. Some common features Large set of supported audio and video codecs I/O Alsa, portaudio, ao, etc.. 35 / 73

  36. Some common features Large set of supported audio and video codecs I/O Alsa, portaudio, ao, etc.. File output 36 / 73

  37. Some common features Large set of supported audio and video codecs I/O Alsa, portaudio, ao, etc.. File output HTTP, icecast, HLS, SRT, etc.. 37 / 73

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend