如何使用 RStudio 读取 R 中的 MP3 元数据?

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

您建议我如何从使用 Audacity 创建的 MP3 文件中读取元数据?

我通常将 R 与 RStudio 结合使用。 StackOverflow 的上一篇文章问道:“是否可以使用 R 读取音乐文件元数据?”有人说“你“可以”使用 readChar 和/或 readBin 的组合。我尝试过

data<- readBin(MP3file, 'character', 30000)

我使用

rle(data == '')
来解析“数据”,以区分 ID3v2.3 和实际的声音数据。然而,我得到的似乎并没有提供太多信息。

我发现其他推荐 taglib-sharp 的讨论,例如“如何使用 taglib 从音频文件中获取信息”,但我不知道如何使用它。我见过其他讨论推荐其他东西、其他 Python 包或 C 或 C#。我使用过一点点 Python,但还不足以知道在这里做什么。

帮助。谢谢,斯宾塞·格雷夫斯

r metadata mp3
2个回答
0
投票

按照here的建议,您可以使用exiftool(在本例中,使用

exifr
):

# 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

# read the exif data from it
exifr::read_exif("jazz.mp3")

# Output:
  SourceFile ExifToolVersion FileName Directory FileSize FileModifyDate         
  <chr>                <dbl> <chr>    <chr>        <int> <chr>                  
1 jazz.mp3              12.2 jazz.mp3 .          5090909 2023:08:10 14:53:41+14…
# ℹ 34 more variables: FileAccessDate <chr>, FileInodeChangeDate <chr>,
#   FilePermissions <int>, FileType <chr>, FileTypeExtension <chr>,
#   MIMEType <chr>, MPEGAudioVersion <int>, AudioLayer <int>,
#   AudioBitrate <int>, SampleRate <int>, ChannelMode <int>, MSStereo <int>,
#   IntensityStereo <int>, CopyrightFlag <int>, OriginalMedia <int>,
#   Emphasis <int>, ID3Size <int>, Title <chr>, Artist <chr>, Track <int>,
#   Album <chr>, RecordingTime <chr>, Genre <chr>, Copyright <chr>, …

0
投票

您可以查看 exiftool,它可以从各种媒体文件格式(包括 MP3)中提取元数据。它可以生成 CSV 输出,并且有两个 R 包使用它:exiftoolrexifr

示例用法 - 安装了

exiftool
并位于您的路径中,从命令提示符或终端:

exiftool -csv yourfile.mp3 > yourfile.csv

然后使用 e.g.

read.csv()
readr::read_csv()
将 CSV 文件读入 R。

安装了

exifr
后,你可能会做这样的事情(未经测试):

library(exifr)

files <- list.files("path/to/your/mp3files", 
                    recursive = TRUE, 
                    pattern = "*.mp3", 
                    full.names = TRUE)

metadata <- read_exif(files)

与安装

exiftoolr
类似(未经测试):

library(exiftoolr)

files <- list.files("path/to/your/mp3files", 
                    recursive = TRUE, 
                    pattern = "*.mp3", 
                    full.names = TRUE)

metadata <- exif_read(files, pipeline = "csv")
© www.soinside.com 2019 - 2024. All rights reserved.