【问题标题】:How to play audio files in Shiny if no path/source is known?如果不知道路径/来源,如何在 Shiny 中播放音频文件?
【发布时间】:2018-05-01 00:38:07
【问题描述】:

对于闪亮的应用程序,我希望能够播放会话本身生成的音频文件。 如果是我要上传的音频文件,我会使用

    tags$audio(src = "www/name.wav", type = "audio/wav")

但是,如果在会话期间生成音频文件,我找不到使用 tags$audio 的方法,因此我没有文件名或路径。 关于如何播放此类音频文件的任何建议?谢谢!

编辑:我添加了一个简短的可重现示例。希望我想要做的事情变得更清楚。

    url <- "http://www.wavlist.com/humor/001/911d.wav"

    # Define the temporary directory and download the data
    dest_path <- "sound.wav"
    download.file(url,destfile = dest_path)

    # Load the audio file
    test <- audio::load.wave(dest_path)

    # Change something small to this audio file
    test <- test + 0.3

我现在的问题是如何在没有src = "" 路径的情况下使用tags$audio(src = "", type = "audio/wav") 玩“测试”?

【问题讨论】:

    标签: r audio shiny


    【解决方案1】:

    一种可能是将生成的文件复制到www 文件夹,然后使用renderUI 创建您的音频标签。下面是一个关于如何实现这一目标的示例。希望这会有所帮助!

    library(shiny)
    library(shinyjs)
    library(audio)
    library(seewave)
    
    ui <- fluidPage(
      textInput('my_url','URL:',value="http://www.wavlist.com/humor/001/911d.wav"),
      uiOutput('my_audio')
    )
    
    server <- function(input, output, session){
    
      # Render the audio player
      output$my_audio <- renderUI({
    
        url <- input$my_url
    
        # Define the temporary directory and download the data
        dest_path <- "sound.wav"
        download.file(url,destfile = dest_path)
        # Load the audio file
        test <- audio::load.wave(dest_path)
        # Change something small to this audio file
        test <- test + 0.3
        savewav(test,filename = 'www/myaudio.wav')
    
          tags$audio(id='my_audio_player',
                     controls = "controls",
                     tags$source(
                       src = markdown:::.b64EncodeFile('www/myaudio.wav'),
                       type='audio/ogg; codecs=vorbis'))
    
      })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 感谢您的回答弗洛里安!它确实将我推向了正确的方向(我认为),但我现在面临的问题如下:我正在生成一个音频变量(基本上是双打列表),所以我没有它的数据路径,因此我不能使用 file.copy(from, to)。关于如何将这个音频变量“下载”到 www 文件夹的任何建议?
    • @AES,如果您正在寻找更具体的答案,请考虑创建reproducible example。我不太确定你在问什么。
    • 我添加了一个可重现的示例。我很抱歉! :)
    • @AES,我修改了我的示例以更符合您所需的行为。让我知道这是否有帮助!
    • 是的,它有帮助!非常感谢!
    猜你喜欢
    • 2016-06-29
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-09-05
    • 2011-05-06
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多