使用python创建有效的.mp3文件

时间:2016-06-12 17:29:18

标签: python perl tags mp3 id3

我看到了这段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:\用户\管理员\音乐\ my_file.mp3'不以ID3标签开头

即使错误处理有效,我也不认为这种方法可行。 任何人都可以帮助我。只想创建一个简单的mp3虚拟文件,我可以为其编写有效且可读的标签。

1 个答案:

答案 0 :(得分:3)

你对Perl的MP3::Tag模块不正确。它的构造函数需要一个现有的有效MP3文件,您可以读取和修改其标签。它不会从头开始创建MP3文件

This site有无声的MP3文件,长度为1/10秒,我建议你只需下载其中一个