您建议我如何从使用 Audacity 创建的 MP3 文件中读取元数据?
我通常将 R 与 RStudio 结合使用。 StackOverflow 的上一篇文章问道:“是否可以使用 R 读取音乐文件元数据?”有人说“你“可以”使用 readChar 和/或 readBin 的组合。我尝试过
data<- readBin(MP3file, 'character', 30000)
我使用
rle(data == '')
来解析“数据”,以区分 ID3v2.3 和实际的声音数据。然而,我得到的似乎并没有提供太多信息。
我发现其他推荐 taglib-sharp 的讨论,例如“如何使用 taglib 从音频文件中获取信息”,但我不知道如何使用它。我见过其他讨论推荐其他东西、其他 Python 包或 C 或 C#。我使用过一点点 Python,但还不足以知道在这里做什么。
帮助。谢谢,斯宾塞·格雷夫斯
按照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>, …
您可以查看 exiftool,它可以从各种媒体文件格式(包括 MP3)中提取元数据。它可以生成 CSV 输出,并且有两个 R 包使用它:exiftoolr 和 exifr。
示例用法 - 安装了
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")