2016-06-18 6 views
2

Я хотел бы иметь возможность добавить обложку альбома в файл с помощью мутагена, однако при добавлении его в файл он возвращается с:Встраивание обложки альбома в MP4 файл с помощью мутагена

File "D:\Download\pandora\renamingMETAEFF.pyw", line 71, in <module> 
    meta['covr'] = image 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\_file.py", line 67, in __setitem__ 
    self.tags[key] = value 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 357, in __setitem__ 
    self._render(key, value) 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 371, in _render 
    return render_func(self, key, value) 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 732, in __render_cover 
    b"data", struct.pack(">2I", imageformat, 0) + cover)) 

TypeError: can't concat bytes to str 

Соответствующий фрагмент кода заключается в следующем:

from mutagen.mp4 import MP4 

image = jpgname + '.jpg' 
meta['\xa9nam'] = song 
meta['\xa9ART'] = artist 
meta['\xa9alb'] = album 
meta = MP4(songPath) 
meta['covr'] = image 
meta.save() 

остальная часть метаданных работает прекрасно, однако часть изображения полностью разрушает весь код.

ответ

3

mutagen docs От:

MP4 мета 'covr' - обложка, список объектов MP4Cover (которые помечены STRs).

MP4Cover ImageFormat - формат изображения (либо FORMAT_JPEG или FORMAT_PNG)

from mutagen.mp4 import MP4, MP4Cover 

video = MP4("test.mp4") 

video["\xa9nam"] = "Test1" 
video["\xa9ART"] = "Test2" 
video["\xa9alb"] = "Test3" 

with open("cover.jpg", "rb") as f: 
    video["covr"] = [ 
     MP4Cover(f.read(), imageformat=MP4Cover.FORMAT_JPEG) 
    ] 

video.save() 
+0

замена из функции файла для открытой функции делает всю работу скрипт спасибо –

+0

@ DanielRachfał К сожалению, я имел в виду, чтобы написать ' open'. Честно говоря, я понятия не имею, почему я написал 'файл', который работает только на python 2. В любом случае я рад, что смогу помочь. Пожалуйста, подумайте о принятии ответа. –

+0

Вы можете сделать эту работу с .mp3-файлом? Как? –

Смежные вопросы