- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
iTunes从歌曲文件中获取歌词信息,我想问是否有一些方法或API可以从歌曲文件中获取歌词(不使用网络!),在cocoa或carbon中。非常感谢。 :)
最佳答案
而且没有简单的方法可以做到这一点。
您将需要使用第三方库。而且,虽然有一些第三方库可以透明地处理读取各种不同格式的标签,但它们仅以这种方式处理“基本”标签集;对于其他任何事情,您必须真正了解格式。
例如,使用 TagLib ,要获取艺术家,您只需执行以下操作:
TagLib::FileRef f1("myfile.mp3");
cout << f1.tag()->artist();
TagLib::FileRef f2("myotherfile.aac");
cout << f2.tag()->artist();
但对于歌词来说,是这样的:
TagLib::MPEG::File f1("myfile.mp3");
TagLib::ID3v2::FrameList frames = f1.ID3v2Tag()->frameListMap()["USLT"];
if (!frames.isEmpty()) {
TagLib::ID3v2::UnsynchronizedLyricsFrame *frame =
dynamic_cast<TagLib::ID3v2::UnsynchronizedLyricsFrame *>(frames.front());
// There could be multiple frames here; you may want to look at language
// and/or description, instead of just picking the first.
if (frame) cout << frames->text;
}
TagLib::MP4::File f2("myotherfile.aac");
TagLib::MP4::Item item = f2.tag()->itemListMap()["\xa9lyr"];
TagLib::StringList strings = item.toStringList();
if (!strings.isEmpty()) {
// As above, there could be multiple strings.
cout << strings->front();
}
这超出了我的想象,所以不要指望它能完全按原样工作。当然,几乎没有错误处理。但缺少的重要一点是,它没有告诉您如何确定正在处理的文件类型,以及从中获得什么类型的标签。 (对于上面的两个示例来说,这非常简单,但是名为“.flac”的文件可以是 OGG FLAC 或原始 FLAC,并且可以具有 VORBISCOMMENT、MetaFLAC、ID3 或 APE 标签。)TagLib 可以提供帮助也是如此,但这仍然不是微不足道的。
幸运的是,如果您只关心获得与 iTunes 10.6.3 完全相同的歌词,那么这并不难;规则似乎是这样的:
而且,由于您只处理 ID3v2 和 ITMF,因此为每个库使用单独的库实际上可能更简单,例如 libmp4v2处理 MPEG4 文件比 TagLib 更简单(因为它不处理任何但 MPEG4 文件),如下所示:
MP4FileHandle f = MP4Open("myotherfile.aac");
const MP4Tags *tags = MP4TagsAlloc();
MP4TagsFetch(tags, f);
cout << tags->lyrics;
MP4TagsFree(tags);
MP4Close(f);
此外,如果不必使用 native 代码(Cocoa 或 Carbon),也可以使用其他语言的一些更简单的库。例如,在 Python 中,使用 Mutagen ,你可以这样做:
def printlyrics(path):
f = mutagen.File(path)
for key in f.keys():
if key.startswith('USLT') or key == u'\xa9lyr':
print f[key]
return
printlyrics("myfile.mp3")
printlyrics("myotherfile.aac")
当然,我仍然必须知道 ID3v2 将歌词称为“USLT:my desc:'eng'”,而 ITMF 将其称为“©lyr”,但由于 Python 的动态特性,Mutagen 可以隐藏所有其他细节.
关于macos - 如何从歌曲文件中获取歌曲的歌词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051055/
我正在从事从媒体选择器中挑选歌曲并将数据发送到服务器的项目。我正在转换选择的歌曲。它适用于普通歌曲(即不属于购买的 iTunes 的歌曲),对于购买的歌曲,我收到错误消息。我集成了由苹果提供的这个示例
一旦进入包含.mp3 文件的目录,我就可以随机播放歌曲了 mpg123 -Z *.mp3 但是如果我想递归搜索目录及其子文件夹中的 .mp3 文件并随机播放它们,我尝试了以下命令,但它不起作用。 mp
我有 2 种不同的方法来使用内容解析器检索歌曲。一个用于获取手机上的所有歌曲,一个用于从手机中检索所有播放列表,然后,对于每个播放列表,我获取其中的歌曲并将其添加到播放列表对象。为此,我在所有歌曲列表
我正在从 SD 卡中获取我的歌曲并将其放入 ListView 。 我正在使用这个方法。但它需要一些时间,如果路径不同,我没有得到该数据。 所以,QUE 是否有任何有用的脚本可以显示我所有 SD 卡中的
我正在使用 MPMusicPlayerController.systemMusicPlayer 的一个实例来对商店 ID 数组进行排队。这已经工作了几个月了。今天早些时候我更新到 iOS 14.3,现
如果我使用mp3: "/Music/StreamUploadedSongs/1"在以下代码中: var player = new $("#jquery_jplayer_1").jPlayer({
我正在开发一个 iOS 应用程序,我需要允许用户将 iTunes 中的几首歌曲的预览播放到应用程序中。现在,通过查找 API 和 adamID,我可以轻松找到预览 URL 并让它播放。 我rad
我们可以使用 NAudio 播放 mp4 歌曲吗?请提供一些播放mp4歌曲的代码我需要一个 c# 代码来帮助我播放 mp4 歌曲 最佳答案 可以用NAudio播放.mp4文件,官网有demo。 下载演
我想获取歌曲在特定时间段内的收听次数。使用 MPMediaItemPropertyLastPlayedDate 我只能获取上次播放歌曲的日期,因此如果我每天多次播放歌曲,则只有最后一次才算数。基本上,
我们可以使用 NAudio 播放 mp4 歌曲吗?请提供一些播放mp4歌曲的代码我需要一个 c# 代码来帮助我播放 mp4 歌曲 最佳答案 可以用NAudio播放.mp4文件,官网有demo。 下载演
我正在制作一个闹钟。我有下面的代码。但是,通知音乐正在发挥作用。我想让它播放我设置的mp3文件。我该怎么办? @Override public void onReceive(Context c
我想在我的 Java 游戏中播放 .wav 格式的歌曲,下面是 SoundPlayer 类的一些代码: private static HashMap clips; private static int
我有一个可以播放本地歌曲的 Android 服务(我遵循了这个教程:https://code.tutsplus.com/tutorials/create-a-music-player-on-andro
这个问题在这里已经有了答案: HTML 5 video or audio playlist (12 个答案) 关闭 6 年前。 我想让我的网站播放多首 mp3/歌曲,但它一直在播放 soundtra
我正在从 android 中的 sdcard 访问歌曲,歌曲显示在 ListView 中,但我无法播放这些文件。 代码如下: package com.ex.imageGallery; import a
我正在尝试创建一个嵌入了一些 JavaScript 的 HTML 文件,该文件允许我按下按钮并开始淡出歌曲。我已经设法让它工作,以便它播放歌曲(这是一个开始)。但我一直在尝试使用第二个功能来尝试降低音
将 iTunes 中最后播放的歌曲的信息获取到 Java 程序中的最简单方法是什么?我看过 JACOB 和 iTunes COM,但它们似乎有点过分了。如果这是唯一的方法,有人可以在第一个谷歌结果旁边
我想从 python 播放我的歌曲 (mp3),你能给我一个最简单的命令吗? 这是不正确的: import wave w = wave.open("e:/LOCAL/Betrayer/Metalik
我有一个歌曲列表 - 有没有办法(使用 Spotify/Echo Nest API)批量查找每个轨道的 Spotify ID? 如果有帮助,我计划通过其 API 的“获取音频功能”部分运行这些 ID。
我正在为一个乐队制作一个 iPhone 应用程序,其中列出了该乐队的歌曲。当用户触摸歌曲旁边的按钮时,我想打开 iTunes 并显示该歌曲。目前我正在使用这段代码: [[UIApplication共享
我是一名优秀的程序员,十分优秀!