【问题标题】:How to make a Shiny App beep / play a sound after a reactive event?如何在反应事件后使 Shiny App 发出哔哔声/播放声音?
【发布时间】:2020-06-14 07:12:49
【问题描述】:

我希望 Shiny 应用在响应事件后播放声音。

我已经知道a solution to this at the end of an R script

我试过在 Shiny 上:

library(shiny)
library(beepr)

ui <- fluidPage(
    tags$head(tags$script(src = "message-handler.js")),
    actionButton("dobeep", "Play sound")
)

server <- function(input, output, session) {
    observeEvent(input$dobeep, {
        #Beeps on local machine/server
        beepr::beep()

        #Doesn't beep on client
        insertUI(selector = "#dobeep",
                 where = "afterEnd",
                 ui = tags$audio(src = "beep.wav", type = "audio/wav", autoplay = T, controls = NA, style="display:none;")
        )
    })
}

shinyApp(ui, server)

我把beep.wav放在app.R目录下。
在本地机器上,我听到了beepr::beep(),但我没有听到来自客户端的音频标签。
在客户端/服务器模式下,我什么也听不见。
在这两种情况下,音频标签似乎都不起作用。
感谢您的帮助。

【问题讨论】:

  • “在客户端/服务器模式下”:您是指在远程服务器上吗?如果是,您是否上传了 wav 文件以及应用程序的源代码?
  • 是的,我在远程服务器上上传了两个文件。
  • 您可以尝试对文件进行base64编码并将其作为输入吗?见stackoverflow.com/questions/56926161/…。你的例子对我有用。
  • 好的。您的本地设置和远程设置之间显然存在差异,对吗?会不会是权限? file.exists 是否告诉您该文件可以在远程服务器上找到> 等等,等等...
  • 我将 beepr 测试置于本地模式以确保事件被触发,但实际上我在本地模式或远程模式下听不到 beep.wav:请参阅我的编辑

标签: r audio shiny


【解决方案1】:

beep.wav 文件应该在 /www 文件夹中,与闪亮的应用程序位于同一目录中,要使音频标签起作用,请参阅 following post

这行得通:

library(shiny)
library(beepr)

ui <- fluidPage(
    tags$head(tags$script(src = "message-handler.js")),
    actionButton("dobeep", "Play sound")
)

server <- function(input, output, session) {
    observeEvent(input$dobeep, {
        insertUI(selector = "#dobeep",
                 where = "afterEnd",
                 # beep.wav should be in /www of the shiny app
                 ui = tags$audio(src = "beep.wav", type = "audio/wav", autoplay = T, controls = NA, style="display:none;")
        )
    })
}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2012-10-10
    • 2011-05-02
    • 2012-10-06
    相关资源
    最近更新 更多