HTML(或 R Shiny)音频缓存

HTML (or R Shiny) Audio Caching

弄清楚 后,我创建了一个闪亮的服务器,它根据反应输入动态创建 wav 文件。然而,第一个 wav 文件被缓存,尽管文件发生了变化,甚至重命名了文件,只有第一个 wav 被播放,直到整个页面刷新。

通过基于 HTML 的 Shiny 应用程序更改后如何播放更改后的 wav 文件?

我知道这个问题已经在几个地方为 HTML 开发人员提出(并解决)了,使用 javascript or Jquery/php or a server-side solution,但我还没有弄清楚如何让这些工作正常进行与闪亮。

由 BSU 教授解决。冠军。在脚本的顶部,我们有一些名称处理函数,用于保持 wav 名称的唯一性,然后是一个获取适当音频标签的函数:

    get_audio_tag<-function(filename){tags$audio(src = filename,
                                  type ="audio/wav", controls = NA)}
    wave_name<-function(n,p1,f1,p2,f2,p3,f3,l){
    paste0( paste("sound","num",n, "w1",p1,f1,"w2", p2,f2,"w3",p3,f3,"lev",
    gsub("\.","_",l), sep="_"), ".wav")
    }

诀窍是变量 wavname 在其中一个输出函数内动态更新,因此每次触摸反应性输入时,wav 文件都会更改名称。然后 get_audio_tag 函数也在输出函数内部运行,以便进行更新。输出函数的代码如下:

wname<-wave_name(   input$radio,
                    input$frequency1,input$form1, 
                    input$frequency2,input$form2,
                    input$frequency3,input$form3,
                    input$level)

output$audiotag<-renderUI(get_audio_tag("tempwav.wav")) #starting wave file    
output$audiotag<-renderUI(get_audio_tag(wavname))

起始 tempwav 是必需的,因为音频标签在反应元件发送其第一个输出之前加载到 HTML 中。