问题标签 [id3v2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 MP3 ID3v2 标签中设置歌词
我想在 Android 应用程序中将歌词写入 mp3。我找到了一个名为 mp3agic 的用于读取文件mp3
和读取/操作 ID3 标签(ID3v1 和 ID3v2.2 到 ID3v2.4)的 java 库。
我修改mp3agic
为写ID3v2标签的歌词标签,写标签:USLT
. 在维基百科中找到
在一个示例 Android 应用程序中,我修改了 MP3 的艺术家、专辑、标题、流派、歌词和评论。除歌词外,所有标签均已正确修改。PowerAMP
用于验证修改后的MP3
文件,PowerAMP
无法在 MP3 中找到歌词。
如果有人熟悉这个库,这里是我从 AbstractID3v2Tag.java 修改的代码:
MP3
我在 Windows 中的一个程序上设置了歌词,并USLT
用我的应用程序读取了标签并getLyrics()
返回了字符串eng
。 PowerAMP
确实找到了这些由 Windows 程序设置的歌词。
我搜索并发现了许多指向 MP3 ID3 标签修改器库的帖子,这就是我找到 mp3agic 的地方。这是唯一一个我可以轻松修改以合并歌词更改的库。
我发现的一个库是MyID3_for_Android,它没有修改歌词的方法。
我正在寻找这方面的指导。
java - 自动同步歌词和歌曲 - Java
我正在尝试创建一个 Android 应用程序,它将从它的 ID3V2 标签中获取 mp3 的歌词。我的问题是,是否可以在歌曲播放时自动突出显示歌词?就像使用语音处理或类似的东西。我已经查看了以前的类似问题,但所有这些问题都需要手动输入。需要尽快反馈。谢谢你。
java - Java/JAudiotagger:Mp3 错误 ID3 标签大小
我正在使用JAudiotagger库构建一个 mp3 标记应用程序。我的应用程序可以很好地读取 mp3 元数据,并且也可以很好地写入元数据,除了艺术品。所以我的问题如下:
当我在 mp3 文件中添加一些艺术作品并保存时,文件变得越来越大,这是有道理的。但是当我删除一件或所有艺术品时,文件大小并没有变小。
实际问题在于我的 mp3 文件的 ID3v2 标签。当我移除艺术品时,它实际上已从标签中移除,但标签大小本身并没有缩小。
我在删除艺术品时使用的方法是这样的:
,它实际上从列表中删除了一件艺术品,然后通过删除其所有艺术品并从更新的列表中重新复制它们来更新标签本身。
我对解决方案的尝试是:
从更新的旧标签创建一个新标签(在调用之后
tag.deleteArtworkField()
),然后将艺术品添加到新标签,但新标签的大小与旧标签相同。在保存之前使用 修剪 mp3 文件
tag.adjustPadding(File fileToBeTrimmed, int sizeToStoreTagBeforeAudioInBytes, long audioStartByte)
,这会调整 MP3 文件开头的填充长度。
这里的问题是我只知道错误的标签大小而不是正确的,所以我无法正确修剪 mp3 并最终丢失音频数据。
为了更好地说明问题,我添加了一些图片:
之前的mp3文件:
移除一幅作品后的 mp3 文件。请注意,尽管艺术品较少,但标签仍保持其先前的大小:
以及文件应该如何:
我希望任何人有任何想法。提前致谢。
c++ - 如何使用 taglib 编写 id3v2.3
当我使用 taglib 将 id3v2 标签写入 mp3 时,taglib 默认写入 id3v2.4。但是在windows上,媒体播放器和资源管理器无法解析它。
我怎么能解决这个问题?
像这样的代码:
标头版本是 id3 v2.4 但我想另存为 id3 v2.3
mp3 - GEOB 标签的 ID3 v2.3 帧大小字段的正确编码
对于 ID3 v2.3.0 的帧大小字节应该如何编码/解码,我有些困惑。根据(非正式)ID3 v2.3.0 规范,每帧的大小应编码为 4 个字节,其中每个字节的最高有效位未使用。要计算大小,它将采用以下公式:
但是当我使用解析器解析一些 MP3 文件时,相当多的文件具有 GEOB(通用封装对象标签)帧,其大小字节被编码为 Big Endian 32 位整数。
在我通过使用适当的算法重新编码来修复这些字节后,Windows 7 和 Winamp 等商业软件无法正确显示后续标签(在某些情况下,TIT2 就在 GEOB 之后,因此虽然没有显示歌曲的标题它在文件中)。
我还发现 MCDI(音乐 cd 标识符)和 TALB('Album/Movie/Show title')标签有类似的问题。
我通读了 v2.3 规范,并在 Google 上进行了搜索,但无法找到有关使用 32 位整数作为这些帧的大小元数据的任何信息。然而,不同商业软件中的常见行为似乎建议此类字段应使用 32 位整数作为大小,而不是使用 0x7F 屏蔽的 4 个字节。
所以我只是想知道这里是否有人在 ID3 v2.3 上工作过并且可以为我澄清这一点。
php - 使用 getid3() 插入专辑艺术家标签
我正在使用 getID3() 库将元数据插入到没有元数据的歌曲中。
我可以插入除专辑艺术家之外的所有标签,这对我来说非常重要。
在 demo.simple.write.php 中,我给出了歌曲的详细信息,如下所示:
我尝试添加:
但它没有在专辑艺术家中插入任何内容。知道如何插入这个吗?任何帮助表示赞赏。
java - 如何解码使用 jid3lib-0.5.4 获取的 ID3V2 标签
我正在尝试使用 Java 中的 jid3lib 从 MP3 文件中查找 ID3V2 标签。但我得到了凌乱的字符串。这是我的代码:
我得到以下输出:
但在 Windows 资源管理器中,它显示正确的“Himesh Reshammiya”。
我怎样才能在java中得到这个正确的字符串,或者任何解码这个字符串的解决方案?
我认为这可能是一些字符编码。提前致谢
c# - 在 C# 中将 ID3v2 轨道号写为字符串的好方法?
如果这个问题已经在这个网站的某个地方得到了回答,请原谅我,但是当我搜索它时我没有找到任何东西。我使用 taglib-sharp 为 C# 中的 .mp3 文件编写了 ID3v1/2 标记编辑器,并且 taglib-sharp 将轨道编号视为 uint 编号。根据id3.org:
'Track number/Position in set' 框架是一个数字字符串,其中包含音频文件在其原始录音中的顺序号。这可以用一个“/”字符和一个包含原始录音上轨道/元素总数的数字字符串进行扩展。例如“4/9”。
我个人不使用“/”,但我倾向于写“03”而不是“3”。有没有一种简单的方法可以直接将轨道号作为字符串写入标签,而不是通过 uint?
另外,附带问题:taglib 似乎不支持某些标签,特别是 URL、Orig。艺术家、出版商和编码。知道如何处理这些吗?
c - c语言读取ID3V2 TAG
我是一名编程初学者,我的大学有一项任务是编写 C 代码,用于读取 ID3V2 格式的 mp3 文件。我已经在网上搜索并尝试将一些部分放在一起,然后我想出了这段代码。尽管我从上到下放置了许多错误警告,但我仍然无法理解错误在哪里。
我的第一个问题是它编译的代码只有一个警告:警告:格式 '%s' 需要匹配的 'char *' 参数 [-Wformat]
不幸的是,我不知道我的错误是什么。我正在尝试打印用户的输入以防出现错误,我认为这样做会收到此警告。
我的第二个问题是当我执行作为输出得到的代码时:程序未能获取标签
任何帮助将不胜感激。
提前感谢您花时间阅读我的问题。
最好的问候,灭霸
到目前为止,这是我的代码:
java - 如何使用 Java MP3 ID3 标签库检索专辑封面
我正在制作一个 mp3 播放器。我正在使用Java mp3 id3 标记库。我知道专辑封面被编码为 ID3v2 标签。
我可以访问 mp3 文件的 ID3v2 标签,但是我无法获得艺术品!API中的 AbstractID3v2 类中的所有方法 似乎都没有检索图片。
如何使用这个库?