Как воспроизводить аудиофайлы в Shiny, если путь / источник неизвестен? - PullRequest
0 голосов
/ 30 апреля 2018

Для приложения Shiny я хочу иметь возможность воспроизводить аудиофайлы, созданные во время самого сеанса. Если бы это был аудио-файл, который я хочу загрузить, я бы использовал

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

Однако я не смог найти способ использовать теги $ 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

Мой вопрос сейчас заключается в том, как я могу сыграть в «тест», используя tags$audio(src = "", type = "audio/wav"), без указания пути для src = ""?

1 Ответ

0 голосов
/ 30 апреля 2018

Одной из возможностей может быть копирование сгенерированного файла в папку 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...