播放WAV文件时“权限被拒绝”

时间:2014-04-26 11:09:01

标签: r macos

我正在尝试使用tuneR包在R中播放wav文件。我不知道该函数的背景,但似乎它试图将wav文件保存到它无权访问的临时文件中。我正在做以下事情:

> # install package if you don't have it
> install.packages("tuneR")    
> library(tuneR)

> # load some WAV file
> mySound = readWave("Beethoven.wav");
> # plot it to see if things are working:
> plot(mySound)

> # play the sound
> play(mySound)
sh: /var/folders/qv/sw8_92hn4qg0rb5w40gz9mf40000gn/T//RtmpKU9kVN/tuneRtemp.wav: Permission denied

很明显它无法访问此文件夹。如何更改此文件夹或授予R访问此文件夹的权限?

我正在研究MacOSX 10.7.5,RStudio版本为0.98.501。

2 个答案:

答案 0 :(得分:10)

使用OSX时,一个简单的解决方案是使用/ usr / bin中的内置命令行音频播放器。 (见:http://hints.macworld.com/article.php?story=20081002080543392

所以使用:

setWavPlayer('/usr/bin/afplay')

答案 1 :(得分:1)

我制作了一个R套装,让你可以在一段时间内制作自己的音乐。我有这个问题试图让tuneR与mac一起工作。正如你在这里看到的那样:https://github.com/Dasonk/musicmakeR/blob/master/R/playsong.R我的解决方案(可能不是最好的)就是这样做

if(Sys.info()["sysname"] == "Darwin"){
    filename <- tempfile("tuneRtemp", fileext = ".wav")
    #on.exit(unlink(filename))
    writeWave(song, filename)
    system(paste("open -a iTunes", filename))
    return(invisible())
}

其中song是wave数据。因此,我的解决方法主要是将其写入您知道可以访问的文件,然后使用系统直接调用音乐播放器。