2016-03-24 106 views
2

在确定了how to make a Shiny server play a wav file之后,我创建了一个闪亮的服务器,它根据反应输入动态创建wav文件。然而,第一个wav文件被缓存,尽管文件发生了变化,甚至重命名了文件,但只有第一个wav被播放,直到整个页面刷新。HTML(或R闪亮)音频缓存

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

据我所知,这个问题已被要求(和解决)对HTML开发人员在少数地方,使用javascriptJquery/phpserver-side solution,但我还没有想出如何使任何与这些闪亮的工作。

+1

为什么把这搁置?刷新基于HTML的音频标签是一般的,但在R Shiny应用中生成代码非常具体,并且不会在其他地方发布或阐述。实际上,使用R闪光灯首先播放音频的内容很少。我没有一个正确的例子,因为这个问题非常具体。 – Zediiiii

+0

你能告诉我你是如何设法将闪存服务器中的wav文件保存的?我试图做类似的事情,我使用了与[描述]中描述的相同的方法(http://stackoverflow.com/questions/33594007/writting-wav-file-in-shiny-app-with-seewave-and-调谐器)。但不知何故,这不运行。 – zielinskipp

+0

@PiotrZielińskihttp://stackoverflow.com/questions/36205419/r-shiny-audio-playback不会让你在那里,然后PM我和我会给你我的一些代码。 – Zediiiii

回答

1

由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函数也在输出函数中运行,以便发生更新。该代码的输出函数看起来像:因为音频标签在HTML载入前活性元素送他们的第一输出

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是必要的。