2017-01-30 14 views
0

MoviePyについて少し勉強しようとしましたが、ムービーファイルから10秒のセクションを切り取り、テキストをオーバーレイして別のサンプルコードファイル。コードは完璧に動作します...特定のファイルのみです。私はコードを使用したかった2つのビデオファイルを持っています(練習用です)。どちらも.movファイルで、両方とも同じドライブにあり、両方のパスが正しい(私はそれらを複数回検証した)。問題は、ファイルの1つにTypeErrorを取得している間に、他のファイルで完全に動作することです。コードは次のとおりです。MoviePyを使用したときのTypeError

from moviepy.editor import * 

x = int(input("When do you want the cut to start? ")) 
y = int(input("When do you want the cut to end? ")) 


video = VideoFileClip("D:\Videos\Gatlinburgh Drone River 2.MOV").subclip(x,y) 

##video = VideoFileClip("D:\SF_ep\T_R_D.mov").subclip(x,y) #Path is correct 


txt_clip = (TextClip("The Red Dot episode",fontsize=70,color='white') 
      .set_position('center') 
      .set_duration(10)) 

result = CompositeVideoClip([video, txt_clip]) 

result.write_videofile("Text on Screen.webm",fps=25) 

上記の例は完全に機能します。しかし、私はそれをコメントアウトし、右のそれ以下の動画のコメントを外したときに、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "C:\Users\Sam\Python Projects\MoviePy\Example3c.py", line 15, in <module> 
    video = VideoFileClip("D:\\Seinfeld_All_Episodes\\The_Red_Dot.mov").subclip(x,y) 
    File "C:\Python34\lib\site-packages\moviepy\video\io\VideoFileClip.py", line 82, in __init__ 
    nbytes = audio_nbytes) 
    File "C:\Python34\lib\site-packages\moviepy\audio\io\AudioFileClip.py", line 63, in __init__ 
    buffersize=buffersize) 
    File "C:\Python34\lib\site-packages\moviepy\audio\io\readers.py", line 70, in __init__ 
    self.buffer_around(1) 
    File "C:\Python34\lib\site-packages\moviepy\audio\io\readers.py", line 234, in buffer_around 
    self.buffer = self.read_chunk(self.buffersize) 
    File "C:\Python34\lib\site-packages\moviepy\audio\io\readers.py", line 123, in read_chunk 
    self.nchannels)) 
TypeError: 'float' object cannot be interpreted as an integer 

私は任意のコードを変更していないよ、私は別のファイルを指しています。私は別のファイルで同じを試して、同じエラーが発生しました。なぜそれは1つではなく、他のものでは動作しませんか?何かご意見は?

similar questionがスタックオーバーフローの前に尋ねられましたが、確かな回答はありませんでした(少なくとも私の特定の状況に当てはまるものはありません)。

助けがあれば助かります。ありがとう!

答えて

1

もう少し調べてみると、解決策が見つかりましたhere。 Readers.pyのコードの行122は、double "//"の代わりに単一の "/"を使用していたので、整数の代わりにfloatを返していました。私はその行を変更し、それは問題を解決したようだ。詳細はリンクにあります。

私はそれがなぜ特定のファイルで起こったのか他のものではなかったのかまだ分かりません。それにもかかわらず、修正は簡単でした。

関連する問題