pydub .export () проблема - "wave.Error: # каналы не указаны" - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь вырезать клип из mp3, используя библиотеку pydub. Экспорт клипа вызывает у меня некоторые проблемы.

Я пробовал экспортировать как .mp3, так и .wav. Я уверен, что это что-то глупое, что я сделал на моем конце. Пока Пидуб великолепен, я просто что-то напутал.

Экспортируемая часть моего кода выглядит следующим образом:

def cut_clip(track, start, stop):
    full_file = pydub.AudioSegment.from_file(track, format="mp3")
    clip = full_file[start:stop]
    return 

def create_clip_file():
    global clip
    clip = cut_clip('test.mp3', 2200000, 2280000)
    clip = pydub.AudioSegment.export("clip.wav", format="wav")
    print("%s is written." % clip)
    new_file_length = get_track_length(clip)

create_clip_file()

Вот трассировка.

subprocess.call(['ffmpeg', '-y', '-f', 'mp3', '-i', 'test.mp3', '-acodec', 'pcm_s16le', '-vn', '-f', 'wav', '-'])
Traceback (most recent call last):
  File "test.py", line 43, in <module>
    create_clip_file()
  File "test.py", line 38, in create_clip_file
    clip = pydub.AudioSegment.export("clip.wav", format="wav")
  File "/home/jeremy/.virtualenvs/chopin-qm-qH-MX/lib/python3.4/site-packages/pydub/audio_segment.py", line 795, in export
    wave_data.setnchannels(self.channels)
AttributeError: 'str' object has no attribute 'channels'
Exception ignored in: <bound method Wave_write.__del__ of <wave.Wave_write object at 0x6fee80b615c0>>
Traceback (most recent call last):
  File "/usr/lib/python3.4/wave.py", line 315, in __del__
    self.close()
  File "/usr/lib/python3.4/wave.py", line 433, in close
    self._ensure_header_written(0)
  File "/usr/lib/python3.4/wave.py", line 450, in _ensure_header_written
    raise Error('# channels not specified')
wave.Error: # channels not specified

Кто-нибудь случайно видел, что я здесь делаю не так?

Я могу вырезать клип с помощью ffmpeg, но я действительно пытался обернуть голову вокруг pydub.

...