使用 python 创建有效的 .mp3 文件
Posted
技术标签:
【中文标题】使用 python 创建有效的 .mp3 文件【英文标题】:Create valid .mp3 file with python 【发布时间】:2016-06-12 17:29:18 【问题描述】:我看到了这段 perl 代码,它创建了一个 MP3 对象并向其写入了一些标签。我不在 perl 中编写代码,但我假设它会创建一个带有标签的有效 mp3 文件。
$mp3 = MP3::Tag->new('1.mp3');
$mp3->title_set('Some_title');
$mp3->artist_set('Some_artist');
$mp3->update_tags();
$mp3->close();
我想用python写一些类似的东西。 到目前为止,我已经尝试过 mutagen 和 eyeD3,但我只能用这段代码覆盖现有 mp3 文件的标签,我在某处找到了:
from mutagen.easyid3 import EasyID3
# works with valid mp3 files, which already have tags
def manipulate_id3_tags(path, title, artist, genre):
try:
meta = EasyID3(path) # HERE I GET ERROR
# i assume, if no meta tags where found, it will create some
# but it never hits the exception even it is ID3NoHeaderError
except ID3NoHeaderError:
meta = mutagen.File(path, easy=True) # this also can't be a proper function call
meta.add_tags()
meta['title'] = title
meta['artist'] = artist
meta['genre'] = genre
meta.save()
print(meta)
我不认为这些模块可以从头开始创建 mp3 文件。
我阅读了关于 MP3 的wikipedia article。我的想法是在 python 中创建一个 .mp3 文件并将标题写入它。然后我用垃圾代码填充其余部分。
这是我根据***文章的示例标题: 11111111 11111011 11010110 00000100
byte_header = b"\xff\xfb\xd6\x04"
mp3 = open(path + "\\my_file.mp3", "wb")
mp3.write(byte_header)
mp3.write(b"\x01" * 800)
mp3.close
我在上面的注释行收到错误 'C:\Users\Admin\Music\my_file.mp3' 不以 ID3 标签开头
即使错误处理会起作用,我认为这种方法也不会起作用。 任何人都可以在这里帮助我。只想创建一个简单的 mp3 虚拟文件,我可以在其中写入有效且可读的标签。
【问题讨论】:
【参考方案1】:您对 Perl 的 MP3::Tag 模块有误。它的构造函数需要一个现有的有效 MP3 文件,您可以读取和修改其标签。它不会从头开始创建 MP3 文件
This site 有长度为 1/10 秒以上的静音 MP3 文件,我建议您只需下载其中一个
【讨论】:
感谢您的回答。关于这个页面,通过简单地将有效的 mp3 标头写入文件来创建有效的 mp3 文件并不像我想象的那么容易。期望从不工作的错误处理中,我可以将一些标签写入这些无声的 mp3 文件,例如VLC 识别。 由于空白 mp3 的链接已失效,我建议改用这个 Github 存储库:anars/blank-audio。以上是关于使用 python 创建有效的 .mp3 文件的主要内容,如果未能解决你的问题,请参考以下文章