Воспроизведение аудио из MoviePy в Pygame с использованием NumPy Array - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь воспроизвести звук с MoviePy AudioFileClip , используя pygame . У меня возникают проблемы, когда я пытаюсь преобразовать массив NumPy в узнаваемый объект pygame. В соответствии с документами , я могу использовать функцию pygame.sndarray.make_sound(NumPyArray) для преобразования. Мой код:

import pygame
from moviepy.editor import *

sound = AudioFileClip("video.mp4") #sound from a video
newSound = sound.subclip("00:00:13","00:00:15.0") #clip of 13 to 15 sec.
soundArray = newSound.to_soundarray() #convert to NumPy array

pygame.init() #initialize Pygame
pygameSound = pygame.sndarray.make_sound(soundArray) #error here
pygameSound.play()

Вызов функции, newsound = pygame.sndarray.make_sound(newsound), от второй до последней строки выдает следующую ошибку при выполнении:

\lib\site-packages\pygame\_numpysndarray.py", line 75, in make_sound
    return mixer.Sound (array=array)
ValueError: Array has unsupported item format 'd'

Почему здесь появляется ValueError? Как я могу исправить эту проблему?


Редактировать: Построение звукового объекта-пигмея с pygame.mixer.Sound

Я также пытался изменить последний стих кода для реализации pygame.mixer.Sound(). Согласно связанным документам , функция должна быть еще одним способом создания звука из массива NumPy в Pygame. Тем не менее, я также сталкиваюсь с проблемами при попытке этого. Заменив последний стих из приведенного выше кода следующим:

pygame.mixer.init()
pygameSound = pygame.mixer.Sound(soundArray)
pygameSound.play()

Код выполняется без ошибок, однако звук не воспроизводится. Это контрастирует с тем фактом, что я проверял наличие звука между метками времени 13 и 15 секунд в исходном файле video.mp4.

...