Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Audio conversion, read/write #18

Closed
noamross opened this issue Aug 11, 2019 · 3 comments
Closed

Audio conversion, read/write #18

noamross opened this issue Aug 11, 2019 · 3 comments

Comments

@noamross
Copy link

R has wav files readers in the audio and tuneR packages, (simple as wav files are just raw audio samples), and the tuneR package can read mp3 files. However, there is now way to write mp3 or other compressed formats.

ffmpeg allows conversion between audio formats. It would be great if one could convert wav tomp3 using av. As ffmpeg allows conversion of raw audio, one could in theory use it to write audio directly to mp3 from a numeric vector and vice versa.

@muschellij2
Copy link
Contributor

It may be possible to hack it (you need to pass in something "video" related):

library(av)
library(tuneR)
library(gapminder)
library(ggplot2)
wav = noise()
input = tempfile(fileext = ".wav")
writeWave(wav, input)
makeplot <- function(){
  datalist <- split(gapminder, gapminder$year)
  lapply(datalist, function(data){
    p <- ggplot(data, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
      scale_size("population", limits = range(gapminder$pop)) + geom_point() + ylim(20, 90) +
      scale_x_log10(limits = range(gapminder$gdpPercap)) + ggtitle(data$year) + theme_classic()
    print(p)
  })
}
res = av_capture_graphics(makeplot(), output = tempfile(fileext = ".mp3"),
                          audio = input)

tuneR::readMP3(res)
#> 
#> Wave Object
#>  Number of Samples:      46080
#>  Duration (seconds):     1.04
#>  Samplingrate (Hertz):   44100
#>  Channels (Mono/Stereo): Mono
#>  PCM (integer format):   TRUE
#>  Bit (8/16/24/32/64):    16

Created on 2019-08-11 by the reprex package (v0.3.0)

Session info
devtools::session_info()
#> ─ Session info ──────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 3.6.0 (2019-04-26)
#>  os       macOS Mojave 10.14.6        
#>  system   x86_64, darwin15.6.0        
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_US.UTF-8                 
#>  ctype    en_US.UTF-8                 
#>  tz       America/New_York            
#>  date     2019-08-11                  
#> 
#> ─ Packages ──────────────────────────────────────────────────────────────
#>  package     * version  date       lib source                           
#>  assertthat    0.2.1    2019-03-21 [1] CRAN (R 3.6.0)                   
#>  av          * 0.2      2018-09-30 [1] CRAN (R 3.6.0)                   
#>  backports     1.1.4    2019-04-10 [1] CRAN (R 3.6.0)                   
#>  callr         3.3.1    2019-07-18 [1] CRAN (R 3.6.0)                   
#>  cli           1.1.0    2019-03-19 [1] CRAN (R 3.6.0)                   
#>  colorspace    1.4-1    2019-03-18 [1] CRAN (R 3.6.0)                   
#>  crayon        1.3.4    2017-09-16 [1] CRAN (R 3.6.0)                   
#>  desc          1.2.0    2019-07-10 [1] Github (muschellij2/desc@b0c374f)
#>  devtools      2.1.0    2019-07-06 [1] CRAN (R 3.6.0)                   
#>  digest        0.6.20   2019-07-04 [1] CRAN (R 3.6.0)                   
#>  dplyr         0.8.3    2019-07-04 [1] CRAN (R 3.6.0)                   
#>  evaluate      0.14     2019-05-28 [1] CRAN (R 3.6.0)                   
#>  fs            1.3.1    2019-05-06 [1] CRAN (R 3.6.0)                   
#>  gapminder   * 0.3.0    2017-10-31 [1] CRAN (R 3.6.0)                   
#>  ggplot2     * 3.2.0    2019-06-16 [1] CRAN (R 3.6.0)                   
#>  glue          1.3.1    2019-03-12 [1] CRAN (R 3.6.0)                   
#>  gtable        0.3.0    2019-03-25 [1] CRAN (R 3.6.0)                   
#>  highr         0.8      2019-03-20 [1] CRAN (R 3.6.0)                   
#>  htmltools     0.3.6    2017-04-28 [1] CRAN (R 3.6.0)                   
#>  knitr         1.24     2019-08-08 [1] CRAN (R 3.6.0)                   
#>  labeling      0.3      2014-08-23 [1] CRAN (R 3.6.0)                   
#>  lazyeval      0.2.2    2019-03-15 [1] CRAN (R 3.6.0)                   
#>  magrittr      1.5      2014-11-22 [1] CRAN (R 3.6.0)                   
#>  MASS          7.3-51.4 2019-03-31 [1] CRAN (R 3.6.0)                   
#>  memoise       1.1.0    2017-04-21 [1] CRAN (R 3.6.0)                   
#>  munsell       0.5.0    2018-06-12 [1] CRAN (R 3.6.0)                   
#>  pillar        1.4.2    2019-06-29 [1] CRAN (R 3.6.0)                   
#>  pkgbuild      1.0.3    2019-03-20 [1] CRAN (R 3.6.0)                   
#>  pkgconfig     2.0.2    2018-08-16 [1] CRAN (R 3.6.0)                   
#>  pkgload       1.0.2    2018-10-29 [1] CRAN (R 3.6.0)                   
#>  prettyunits   1.0.2    2015-07-13 [1] CRAN (R 3.6.0)                   
#>  processx      3.4.1    2019-07-18 [1] CRAN (R 3.6.0)                   
#>  ps            1.3.0    2018-12-21 [1] CRAN (R 3.6.0)                   
#>  purrr         0.3.2    2019-03-15 [1] CRAN (R 3.6.0)                   
#>  R6            2.4.0    2019-02-14 [1] CRAN (R 3.6.0)                   
#>  Rcpp          1.0.2    2019-07-25 [1] CRAN (R 3.6.0)                   
#>  remotes       2.1.0    2019-06-24 [1] CRAN (R 3.6.0)                   
#>  rlang         0.4.0    2019-06-25 [1] CRAN (R 3.6.0)                   
#>  rmarkdown     1.14     2019-07-12 [1] CRAN (R 3.6.0)                   
#>  rprojroot     1.3-2    2018-01-03 [1] CRAN (R 3.6.0)                   
#>  scales        1.0.0    2018-08-09 [1] CRAN (R 3.6.0)                   
#>  sessioninfo   1.1.1    2018-11-05 [1] CRAN (R 3.6.0)                   
#>  signal        0.7-6    2015-07-30 [1] CRAN (R 3.6.0)                   
#>  stringi       1.4.3    2019-03-12 [1] CRAN (R 3.6.0)                   
#>  stringr       1.4.0    2019-02-10 [1] CRAN (R 3.6.0)                   
#>  testthat      2.1.1    2019-04-23 [1] CRAN (R 3.6.0)                   
#>  tibble        2.1.3    2019-06-06 [1] CRAN (R 3.6.0)                   
#>  tidyselect    0.2.5    2018-10-11 [1] CRAN (R 3.6.0)                   
#>  tuneR       * 1.3.3    2018-07-08 [1] CRAN (R 3.6.0)                   
#>  usethis       1.5.1    2019-07-04 [1] CRAN (R 3.6.0)                   
#>  withr         2.1.2    2018-03-15 [1] CRAN (R 3.6.0)                   
#>  xfun          0.8      2019-06-25 [1] CRAN (R 3.6.0)                   
#>  yaml          2.2.0    2018-07-25 [1] CRAN (R 3.6.0)                   
#> 
#> [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library

@jeroen jeroen closed this as completed in 721e249 Aug 14, 2019
@jeroen
Copy link
Member

jeroen commented Aug 14, 2019

The dev version now has av_encode_audio() which allows you to convert audio from a video/audio file into another audio format.

@muschellij2
Copy link
Contributor

FYI, the command is now av_audio_convert.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants