2017-01-30 70 views
0

當在試圖瞭解一點MoviePy,我複製,削減10第二部分出電影文件的一些示例代碼(我略作修改),覆蓋其上的文字,並將其寫入爲不同文件。該代碼完美...只適用於某些文件。我有,我想用的(只是爲了練習)的代碼的兩個視頻文件。兩者都.mov格式的文件,兩者是相同的驅動器上,這兩個路徑是正確的(我多次驗證了它們)。問題是我收到的文件中的一個類型錯誤,而它完美另一方。代碼如下:類型錯誤使用MoviePy

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 

我不會改變任何代碼,我只是指向不同的文件。我試過不同的文件,並得到相同的錯誤。爲什麼它會在一個而不是另一個上工作?有什麼想法嗎?

一個similar question已要求堆棧溢出之前,但沒有發現任何固體的答案(至少沒有應用到我的特殊情況)。

任何幫助將是偉大的。謝謝!

回答

1

在搜索了一下後,我發現了一個解決方案here。因爲它是使用「/」的單個代替雙「//」的在Readers.py代碼122線被返回一個浮動的,而不是一個整數。我改變了這條線,似乎解決了這個問題。詳情請見鏈接。

爲了記錄,我仍然不明白爲什麼它發生在某些文件而不是其他人。不過,修復很簡單。