【问题标题】:Liquidsoap not identifying variable clearly definedLiquidsoap 未明确定义识别变量
【发布时间】:2013-08-05 08:54:12
【问题描述】:

好吧,我已经拉头发好几个小时了

Liquidsoap 对我不起作用,我知道这应该起作用,代替一个明显的错误...

set("log.file",false)
set("log.stdout",true)
set("log.level",3)

podcasts = playlist("/home/user/icecast/ham.txt")

# This function turns a fallible
# source into an infallible source
# by playing a static single when
# the original song is not available
def my_safe(radio) =
  # We assume that festival is installed and
  # functional in liquidsoap
  security = single("say:Hello, we are currently having some technical difficulties but we'll be back soon so stay tuned!")
  # We return a fallback where the original
  # source has priority over the security
  # single. We set track_sensitive to false
  # to return immediately to the original source
  # when it becomes available again.
  fallback(track_sensitive=false,[radio, security])
end

radio= podcasts
radio= my_safe(podcasts)

# A function that contains all the output
# we want to create with the final stream
def outputs(s) =
  # First, we partially apply output.icecast
  # with common parameters. The resulting function
  # is stored in a new definition of output.icecast,
  # but this could be my_icecast or anything.
  output.icecast = output.icecast(host="localhost", password="foobar")
  # An output in mp3 to the "live" mountpoint:
  output.icecast(%mp3, mount="live",radio)
end

还有错误

At line 23, character 6: The variable radio defined here is not used anywhere
  in its scope. Use ignore(...) instead of radio = ... if you meant
  to not use it. Otherwise, this may be a typo or a sign that your script
  does not do what you intend.

如果有人也可以解决我遇到的另一个问题

我想了解如何将两个源运行到两个单独的挂载点

set("log.file",false)
set("log.stdout",true)
set("log.level",3)

podcasts = playlist("/home/user/icecast/ham.txt")
songlist = playlist("/home/user/icecast/otherplaylist.txt")

# This function turns a fallible
# source into an infallible source
# by playing a static single when
# the original song is not available
def my_safe(radio) =
  # We assume that festival is installed and
  # functional in liquidsoap
  security = single("say:Hello, we are currently having some technical difficulties but we'll be back soon so stay tuned!")
  # We return a fallback where the original
  # source has priority over the security
  # single. We set track_sensitive to false
  # to return immediately to the original source
  # when it becomes available again.
  fallback(track_sensitive=false,[radio, security])
end

radio= podcasts
radio= my_safe(podcasts)

def my_safe(songlist) =
  # We assume that festival is installed and
  # functional in liquidsoap
  security = single("say:Hello, we are currently having some technical difficulties but we'll be back soon so stay tuned!")
  # We return a fallback where the original
  # source has priority over the security
  # single. We set track_sensitive to false
  # to return immediately to the original source
  # when it becomes available again.
  fallback(track_sensitive=false,[songlist, security])
end

moarradio= songlist
moarradio= my_safe(songlist)

# A function that contains all the output
# we want to create with the final stream
def outputs(s) =
  # First, we partially apply output.icecast
  # with common parameters. The resulting function
  # is stored in a new definition of output.icecast,
  # but this could be my_icecast or anything.
  output.icecast = output.icecast(host="localhost", password="foobar")
  # An output in mp3 to the "live" mountpoint:
  output.icecast(%mp3, mount="live",radio)

  output.icecast(%mp3, mount="otherlive",moarmusic)
end

我得到了同样的错误,但它告诉我第二个变量没有被使用(moarradio)

【问题讨论】:

    标签: audio stream audio-streaming icecast liquidsoap


    【解决方案1】:

    liquidsoap 配置文件基本上是一个脚本,这意味着它将从上到下运行。

    读取配置文件时,它抱怨您没有使用定义的第 23 行 radio 变量,原因是您使用的是定义的第 24 行。与许多其他语言不同,no assignments, only definitions 在液体肥皂脚本

    除此之外,您似乎不了解全局变量和局部变量之间的区别,以及它们各自的作用域。

    您正在声明一个my_safe 函数,该函数接受一个参数。在函数的范围内,使用其名称引用您的参数。然后用你的全局变量作为参数调用my_safe函数,你所期望的就会发生。

    如果您不调用outputs 函数,您的源将不会被注册。只需删除函数构造。

    这是我重写您的第二个示例的方式:

    set("log.file",false)
    set("log.stdout",true)
    set("log.level",3)
    
    podcasts = playlist("/home/user/icecast/ham.txt")
    songlist = playlist("/home/user/icecast/otherplaylist.txt")
    
    # This function turns a fallible
    # source into an infallible source
    # by playing a static single when
    # the original song is not available
    def my_safe(stream) =                          # <- used a different variable name here
      # We assume that festival is installed and
      # functional in liquidsoap
      security = single("say:Hello, we are currently having some technical difficulties but we'll be back soon so stay tuned!")
      # We return a fallback where the original
      # source has priority over the security
      # single. We set track_sensitive to false
      # to return immediately to the original source
      # when it becomes available again.
      fallback(track_sensitive=false,[stream, security])  # <- used a different variable name here
    end
    
    radio= my_safe(podcasts) # <- fix here
    
    # <- got rid of redeclaration of my_safe
    
    moarradio= my_safe(songlist) # <- fix here
    
    # <- got rid of function construct
    # First, we partially apply output.icecast
    # with common parameters. The resulting function
    # is stored in a new definition of output.icecast,
    # but this could be my_icecast or anything.
    output.icecast = output.icecast(host="localhost", password="foobar")
    # An output in mp3 to the "live" mountpoint:
    output.icecast(%mp3, mount="live",radio)
    output.icecast(%mp3, mount="otherlive",moarradio)  # <- fix here
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多