2

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.

このエラーの意味と、この問題を解決する方法を知っている人はいますか?

4

2 に答える 2

0

明らかに Zulko の解決策は正しいのですが、「なぜ moviepy はビットレートについて不平を言うのですか?」という実際の質問に対する答えは私です。つまり、この行The audio/video export failed, possily because the bitrate you specified was two high or too low for the video codec.は、ほとんどのエクスポート試行が失敗した後に出力される一般的な行です。それが実際の解決策になることはめったにありません。

可能性があると思われる場合は、clip.write_videofile("output.mp4", bitrate=500)ビットレートを呼び出して、必要な値に設定してください。

于 2017-01-11T12:08:12.573 に答える