2020年11月28日土曜日

moviepy でsubclipがうまく取得できない

moviepy でsubclipしてファイル出力だが、

エラーになる

こちらでが出てしまう

Moviepy - Building video VandA-mpy.mp4.

MoviePy - Writing audio in VandA-mpyTEMP_MPY_wvf_snd.mp3

MoviePy - Done.

Moviepy - Writing video VandA-mpy.mp4


Moviepy - Done !

Moviepy - video ready VandA-mpy.mp4

Exception ignored in: <function FFMPEG_AudioReader.__del__ at 0x000001FB240784C0>

Traceback (most recent call last):

  File "C:\Users\kobay\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\audio\io\readers.py", line 254, in __del__

    self.close_proc()

  File "C:\Users\kobay\AppData\Local\Programs\Python\Python38\lib\site-packages\moviepy\audio\io\readers.py", line 149, in close_proc

    self.proc.terminate()

  File "C:\Users\kobay\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1442, in terminate

    _winapi.TerminateProcess(self._handle, 1)

OSError: [WinError 6] ハンドルが無効です。



ネットで調べると、あるある!

原因は、ffmpegのバージョンかも?!



面白いことに、subclipのスタート位置を30秒より多くするとエラーになる

29秒以下なら大丈夫なのだ!


また、もっと面白いのは、このソースは関数になっているが

関数呼び出しにしないと、全然OK、すべて正常になってしまった。

しかしながら、関数化できないとはバグか?

環境(インストール。。)なのかな?



ソース

 import moviepy.editor as mp

def main123(  ):

    video = mp.VideoFileClip( "VandA.mp4" )

    video = video.subclip( 30, 30+1)

    video.write_videofile("VandA-mpy.mp4", fps=1)


main123()

# //video = mp.VideoFileClip( "VandA.mp4" )

# //video = video.subclip( 30, 30+1)

# //video.write_videofile("VandA-mpy.mp4", fps=1)



pip install ffmpeg-pyth

ffmegが怪しいとのことで、直接パイソンから使ってみた。

pip install ffmpeg-pyth

してから

次を実行

import ffmpeg


stream = ffmpeg.input('VandA.mp4')

stream = ffmpeg.output(stream, 'VandA-mpeg.mp4',t=50,ss=100)

ffmpeg.run(stream)


エラーなくできた、なーんだffmpegいいじゃん!
と言うと怪しいのは、moviePyじゃ

moviePyは、なにか.....








参考URL ffmpegを直接動かす

0 件のコメント:

コメントを投稿