Я только что попробовал использовать библиотеку moviepy
в первый раз. Генерация фильмов от numpy
массивов была действительно простой, интуитивно понятной и разработанной из коробки. Это то, что я пробовал:Почему видеоролики жалуются на битрейт при создании аудиофайла?
from moviepy.editor import VideoClip
import numpy as np
def make_frame(t):
val = int(255.0*(t/3.0))
ls = []
for height in range(100):
row = []
for width in range(300):
row.append([val,0,0])
ls.append(row)
frame = np.array(ls)
return frame
animation = VideoClip(make_frame, duration = 3)
animation.write_gif('first_try.gif', fps=24)
animation.write_videofile('first_try.mp4', fps=24)
Тогда я хотел бы использовать moviepy
для генерации звука. Теоретически это должно работать очень похоже. Вот то, что я пробовал:
from moviepy.editor import AudioClip
import numpy as np
make_frame = lambda t : 2*[ np.sin(404 * 2 * np.pi * t) ]
clip = AudioClip(make_frame, duration=5)
clip.write_audiofile('sound.mp4')
Однако, я получил сообщение об ошибке:
[MoviePy] Writing audio in sound.mp4
|----------| 0/111 0% [elapsed: 00:00 left: ?, ? iters/sec]Traceback (most recent call last):
File "sound.py", line 9, in <module>
clip.write_audiofile('sound.mp4')
File "<string>", line 2, in write_audiofile
File "/usr/local/lib/python2.7/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "/usr/local/lib/python2.7/dist-packages/moviepy/audio/AudioClip.py", line 204, in write_audiofile
verbose=verbose, ffmpeg_params=ffmpeg_params)
File "<string>", line 2, in ffmpeg_audiowrite
File "/usr/local/lib/python2.7/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "/usr/local/lib/python2.7/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 162, in ffmpeg_audiowrite
writer.write_frames(chunk)
File "/usr/local/lib/python2.7/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 122, in write_frames
raise IOError(error)
IOError: [Errno 32] Broken pipe
MoviePy error: FFMPEG encountered the following error while writing file sound.mp4:
Invalid encoder type 'libx264'
The audio export failed, possily because the bitrate you specified was two high or too low for the video codec.
Кто-нибудь знает, что это означает ошибку и как эта проблема может быть решена?
* «Недопустимый тип кодировщика» libx264 «Ошибка» кажется не связанной с «битрейтом». У вас установлен этот кодек? вы попробовали расширение '.mp3' (для создания аудиофайла)? – jfs