【发布时间】: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:请参阅我的编辑