是否可以使用R读取音乐文件元数据?

问题描述 投票:0回答:5

我有一堆带有元数据的音频文件(比如 ogg 或 mp3)。

我希望将它们的元数据读入 R,以便创建一个 data.frame:

  • 文件名
  • 文件位置
  • 文件艺术家
  • 文件相册
  • 等等

你知道有什么方法可以做到这一点吗?

r metadata mp3 ogg
5个回答
3
投票

您采用现有的 mp3 或 ogg 客户端,查看它使用的库,然后为所述库编写到 R 的绑定,使用现有客户端作为该侧的指南 - 以及 Rcpp 之类的东西作为另一侧的指南向您展示如何将 C/C++ 库连接到 R。

没有灵丹妙药。

一种更便宜且不太可靠的方法是使用 cmdline 工具来执行您想要的操作,并编写一些小帮助函数,使用

system()
在文件上运行该工具,重新读取 R 中的输出。不漂亮,不可靠,但可能不那么具有挑战性。


1
投票

可能,是,容易,不。

您“可以”在文件上使用 readChar 和/或 readBin 的组合并解析出内容。不过,这将高度依赖于从 ID3v2 标签的原始字节解析 帧标签(请注意,如果它是 版本 1 标签,它会发生变化)。实施直接的 R 解决方案肯定需要大量工作。以这个Python代码为例,它是非常干净的直接Python代码,但有很多分支和解析。


1
投票

您可以将

exiftool
与 R 中可用的
system
命令一起使用。或者,您可以创建正则表达式来处理您需要的字段...如果我是你,我会坚持 Dirk 的建议(像往常一样)=)!


0
投票

2021 年,我想这样做,所以我做了以下事情......

  1. 在“歌曲”视图中创建新的播放列表。
  2. 选择所有歌曲并拖动到新的播放列表。突出显示该播放列表
  3. 文件 > 库 > 导出播放列表。我的默认文件是另存为.txt,如果没有,请指定。
  4. 打开 Excel 以另存为 csv 或在 r 中读取.delim(),因为 txt 文件是制表符分隔的
  5. 导入到R

0
投票

按照本答案中的建议,您可以使用 exiftool。

要在 R 中使用它,您可以使用

exifr

exiftoolr
 也不错):

# download a public domain mp3 file from The Internet Archive download.file("https://archive.org/download/Jazz_Sampler-9619/Kevin_MacLeod_-_AcidJazz.mp3", "jazz.mp3", mode = "wb") install.packages("exifr") # if necessary exifr::read_exif("jazz.mp3") |> mutate(location = ls()) |> # this is assuming that the file is in the working directory. If not, then you want to replace ls() with "Directory" select(name = SourceFile, location, artist = Artist, album = Album) # Output: # A tibble: 1 × 4 name location artist album <chr> <chr> <chr> <chr> 1 jazz.mp3 ~ Kevin MacLeod Jazz Sampler
    
© www.soinside.com 2019 - 2024. All rights reserved.