2016-03-24 105 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是必要的。