Zulko / moviepy

Video editing with Python
https://zulko.github.io/moviepy/
MIT License
12.34k stars 1.55k forks source link

Concatenate videos - Out of bound error #809

Open anandkpandey1 opened 6 years ago

anandkpandey1 commented 6 years ago

While trying to concatenate two videos, following error is encountered. Tried to achive the same via composevideoclip, but same error.

  5%|▍         | 196/4320 [00:00<00:16, 245.63it/s]

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-15-150cad0f5f64> in <module>()
      5 
      6 # Convert to video using moivepy
----> 7 make_video(voice_file,info[0],info[1],bg_count,obj_count)

<ipython-input-5-cfee946698e6> in make_video(mp3_file, raw_title, title, bg_image_count, obj_image_count)
     67     final_video = concatenate_videoclips([intro_video_final,content_video_final])
     68 
---> 69     final_video.write_videofile(video_filename,  codec='png')
     70     final_video.save_frame(thumbnail_filename, t=12)
     71 

<decorator-gen-173> in write_videofile(self, filename, fps, codec, bitrate, audio, audio_fps, preset, audio_nbytes, audio_codec, audio_bitrate, audio_bufsize, temp_audiofile, rewrite_audio, remove_temp, write_logfile, verbose, threads, ffmpeg_params, progress_bar)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

<decorator-gen-172> in write_videofile(self, filename, fps, codec, bitrate, audio, audio_fps, preset, audio_nbytes, audio_codec, audio_bitrate, audio_bufsize, temp_audiofile, rewrite_audio, remove_temp, write_logfile, verbose, threads, ffmpeg_params, progress_bar)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in use_clip_fps_by_default(f, clip, *a, **k)
    135              for (k,v) in k.items()}
    136 
--> 137     return f(clip, *new_a, **new_kw)

<decorator-gen-171> in write_videofile(self, filename, fps, codec, bitrate, audio, audio_fps, preset, audio_nbytes, audio_codec, audio_bitrate, audio_bufsize, temp_audiofile, rewrite_audio, remove_temp, write_logfile, verbose, threads, ffmpeg_params, progress_bar)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in convert_masks_to_RGB(f, clip, *a, **k)
     20     if clip.ismask:
     21         clip = clip.to_RGB()
---> 22     return f(clip, *a, **k)
     23 
     24 @decorator.decorator

/usr/local/lib/python2.7/dist-packages/moviepy/video/VideoClip.pyc in write_videofile(self, filename, fps, codec, bitrate, audio, audio_fps, preset, audio_nbytes, audio_codec, audio_bitrate, audio_bufsize, temp_audiofile, rewrite_audio, remove_temp, write_logfile, verbose, threads, ffmpeg_params, progress_bar)
    316                                        write_logfile=write_logfile,
    317                                        verbose=verbose,
--> 318                                        progress_bar=progress_bar)
    319 
    320         ffmpeg_write_video(self, filename, fps, codec,

<decorator-gen-195> in write_audiofile(self, filename, fps, nbytes, buffersize, codec, bitrate, ffmpeg_params, write_logfile, verbose, progress_bar)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

/usr/local/lib/python2.7/dist-packages/moviepy/audio/AudioClip.pyc in write_audiofile(self, filename, fps, nbytes, buffersize, codec, bitrate, ffmpeg_params, write_logfile, verbose, progress_bar)
    211                                  write_logfile=write_logfile, verbose=verbose,
    212                                  ffmpeg_params=ffmpeg_params,
--> 213                                  progress_bar=progress_bar)
    214 
    215 

<decorator-gen-192> in ffmpeg_audiowrite(clip, filename, fps, nbytes, buffersize, codec, bitrate, write_logfile, verbose, ffmpeg_params, progress_bar)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

/usr/local/lib/python2.7/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.pyc in ffmpeg_audiowrite(clip, filename, fps, nbytes, buffersize, codec, bitrate, write_logfile, verbose, ffmpeg_params, progress_bar)
    168                                   quantize=True,
    169                                   nbytes=nbytes, fps=fps,
--> 170                                   progress_bar=progress_bar):
    171         writer.write_frames(chunk)
    172 

/usr/local/lib/python2.7/dist-packages/tqdm/_tqdm.pyc in __iter__(self)
    928 """, fp_write=getattr(self.fp, 'write', sys.stderr.write))
    929 
--> 930             for obj in iterable:
    931                 yield obj
    932                 # Update and possibly print the progressbar.

/usr/local/lib/python2.7/dist-packages/moviepy/audio/AudioClip.pyc in generator()
     82                 tt = (1.0/fps)*np.arange(pospos[i], pospos[i+1])
     83                 yield self.to_soundarray(tt, nbytes=nbytes, quantize=quantize,
---> 84                                          fps=fps, buffersize=chunksize)
     85 
     86         if progress_bar:

<decorator-gen-194> in to_soundarray(self, tt, fps, quantize, nbytes, buffersize)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

/usr/local/lib/python2.7/dist-packages/moviepy/audio/AudioClip.pyc in to_soundarray(self, tt, fps, quantize, nbytes, buffersize)
    128         #print tt.max() - tt.min(), tt.min(), tt.max()
    129 
--> 130         snd_array = self.get_frame(tt)
    131 
    132         if quantize:

<decorator-gen-132> in get_frame(self, t)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in wrapper(f, *a, **kw)
     87         new_kw = {k: fun(v) if k in varnames else v
     88                  for (k,v) in kw.items()}
---> 89         return f(*new_a, **new_kw)
     90     return decorator.decorator(wrapper)
     91 

/usr/local/lib/python2.7/dist-packages/moviepy/Clip.pyc in get_frame(self, t)
     92                 return frame
     93         else:
---> 94             return self.make_frame(t)
     95 
     96     def fl(self, fun, apply_to=None, keep_duration=True):

/usr/local/lib/python2.7/dist-packages/moviepy/audio/AudioClip.pyc in make_frame(t)
    299             sounds = [c.get_frame(t - c.start)*np.array([part]).T
    300                       for c, part in zip(self.clips, played_parts)
--> 301                       if (part is not False)]
    302 
    303             if isinstance(t, np.ndarray):

<decorator-gen-132> in get_frame(self, t)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in wrapper(f, *a, **kw)
     87         new_kw = {k: fun(v) if k in varnames else v
     88                  for (k,v) in kw.items()}
---> 89         return f(*new_a, **new_kw)
     90     return decorator.decorator(wrapper)
     91 

/usr/local/lib/python2.7/dist-packages/moviepy/Clip.pyc in get_frame(self, t)
     92                 return frame
     93         else:
---> 94             return self.make_frame(t)
     95 
     96     def fl(self, fun, apply_to=None, keep_duration=True):

/usr/local/lib/python2.7/dist-packages/moviepy/Clip.pyc in <lambda>(t)
    135 
    136         #mf = copy(self.make_frame)
--> 137         newclip = self.set_make_frame(lambda t: fun(self.get_frame, t))
    138 
    139         if not keep_duration:

/usr/local/lib/python2.7/dist-packages/moviepy/Clip.pyc in <lambda>(gf, t)
    187             apply_to = []
    188 
--> 189         return self.fl(lambda gf, t: gf(t_func(t)), apply_to,
    190                        keep_duration=keep_duration)
    191 

<decorator-gen-132> in get_frame(self, t)

/usr/local/lib/python2.7/dist-packages/moviepy/decorators.pyc in wrapper(f, *a, **kw)
     87         new_kw = {k: fun(v) if k in varnames else v
     88                  for (k,v) in kw.items()}
---> 89         return f(*new_a, **new_kw)
     90     return decorator.decorator(wrapper)
     91 

/usr/local/lib/python2.7/dist-packages/moviepy/Clip.pyc in get_frame(self, t)
     92                 return frame
     93         else:
---> 94             return self.make_frame(t)
     95 
     96     def fl(self, fun, apply_to=None, keep_duration=True):

/usr/local/lib/python2.7/dist-packages/moviepy/audio/io/AudioFileClip.pyc in <lambda>(t)
     76         self.buffersize = self.reader.buffersize
     77 
---> 78         self.make_frame = lambda t: self.reader.get_frame(t)
     79         self.nchannels = self.reader.nchannels
     80 

/usr/local/lib/python2.7/dist-packages/moviepy/audio/io/readers.pyc in get_frame(self, tt)
    200                 # repeat the last frame instead
    201                 indices[indices>=len(self.buffer)] = len(self.buffer) -1
--> 202                 result[in_time] = self.buffer[indices]
    203                 return result
    204 

IndexError: index -8061665 is out of bounds for axis 0 with size 99922

  5%|▍         | 196/4320 [00:19<06:59,  9.84it/s]

I have seen similar issues being reported and was fixed. @Zulko your help will be required. Thanks in advance

anandkpandey1 commented 6 years ago

Update: Post this issue, Moviepy starts updating the progressbar in individual line. Example:

  0%|          | 0/624 [00:00<?, ?it/s]
  0%|          | 1/624 [00:01<12:48,  1.23s/it]
  0%|          | 2/624 [00:02<10:48,  1.04s/it]
  0%|          | 3/624 [00:02<10:04,  1.03it/s]
  1%|          | 4/624 [00:03<09:13,  1.12it/s]
  1%|          | 5/624 [00:04<08:42,  1.18it/s]
  1%|          | 6/624 [00:04<08:31,  1.21it/s]
  1%|          | 7/624 [00:05<08:21,  1.23it/s]
  1%|▏         | 8/624 [00:06<08:16,  1.24it/s]
GMarzinotto commented 4 years ago

Hi, I have the same issue doing video concatenations. Is there any solution for this? In my case, this is happening with a video that has no audio and that is extremely short.

Thanks in advance !

tburrows13 commented 4 years ago

@GMarzinotto, please provide the exact code that causes the issue and the complete error trace that you are getting. Thanks!

tburrows13 commented 4 years ago

Linking #815