Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: 'NoneType' object has no attribute 'stdout' with Moviepy update #1803

Closed
rruopp opened this issue Jul 6, 2022 · 1 comment
Labels
question Questions regarding functionality, usage video Related to VideoClip and related classes, or handling of video in general.

Comments

@rruopp
Copy link

rruopp commented Jul 6, 2022

Hi there -

I am getting a similar error to this post: #938
However, I am using the newest version of Moviepy, which is mentioned as the solution. The program unsuccessfully attempts to process a few videos but eventually gives the error listed below.
Any help would be appreciated!

Error produced:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
C:\Users\GREENH~1\AppData\Local\Temp/ipykernel_8456/3472042695.py in <module>
      2     clip = video.subclip(cut, cut+3.5)
      3     name = 'trial_%s.mp4' % idx
----> 4     clip.write_videofile(name)

<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, logger)

~\Anaconda3\lib\site-packages\moviepy\decorators.py 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-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, logger)

~\Anaconda3\lib\site-packages\moviepy\decorators.py in use_clip_fps_by_default(f, clip, *a, **k)
    133              for (k,v) in k.items()}
    134 
--> 135     return f(clip, *new_a, **new_kw)

<decorator-gen-170> 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, logger)

~\Anaconda3\lib\site-packages\moviepy\decorators.py 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

~\Anaconda3\lib\site-packages\moviepy\video\VideoClip.py 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, logger)
    291         logger(message="Moviepy - Building video %s." % filename)
    292         if make_audio:
--> 293             self.audio.write_audiofile(audiofile, audio_fps,
    294                                        audio_nbytes, audio_bufsize,
    295                                        audio_codec, bitrate=audio_bitrate,

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

~\Anaconda3\lib\site-packages\moviepy\decorators.py in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

~\Anaconda3\lib\site-packages\moviepy\audio\AudioClip.py in write_audiofile(self, filename, fps, nbytes, buffersize, codec, bitrate, ffmpeg_params, write_logfile, verbose, logger)
    204                                  "parameter in write_audiofile.")
    205 
--> 206         return ffmpeg_audiowrite(self, filename, fps, nbytes, buffersize,
    207                                  codec=codec, bitrate=bitrate,
    208                                  write_logfile=write_logfile, verbose=verbose,

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

~\Anaconda3\lib\site-packages\moviepy\decorators.py in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

~\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py in ffmpeg_audiowrite(clip, filename, fps, nbytes, buffersize, codec, bitrate, write_logfile, verbose, ffmpeg_params, logger)
    164                                 ffmpeg_params=ffmpeg_params)
    165 
--> 166     for chunk in clip.iter_chunks(chunksize=buffersize,
    167                                   quantize=True,
    168                                   nbytes=nbytes, fps=fps,

~\Anaconda3\lib\site-packages\moviepy\audio\AudioClip.py in iter_chunks(self, chunksize, chunk_duration, fps, quantize, nbytes, logger)
     83             assert(size <= chunksize)
     84             tt = (1.0/fps)*np.arange(pospos[i], pospos[i+1])
---> 85             yield self.to_soundarray(tt, nbytes=nbytes, quantize=quantize,
     86                                         fps=fps, buffersize=chunksize)
     87 

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

~\Anaconda3\lib\site-packages\moviepy\decorators.py in requires_duration(f, clip, *a, **k)
     52         raise ValueError("Attribute 'duration' not set")
     53     else:
---> 54         return f(clip, *a, **k)
     55 
     56 

~\Anaconda3\lib\site-packages\moviepy\audio\AudioClip.py in to_soundarray(self, tt, fps, quantize, nbytes, buffersize)
    125         #print tt.max() - tt.min(), tt.min(), tt.max()
    126 
--> 127         snd_array = self.get_frame(tt)
    128 
    129         if quantize:

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

~\Anaconda3\lib\site-packages\moviepy\decorators.py 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 

~\Anaconda3\lib\site-packages\moviepy\Clip.py in get_frame(self, t)
     91                 return frame
     92         else:
---> 93             return self.make_frame(t)
     94 
     95     def fl(self, fun, apply_to=None, keep_duration=True):

~\Anaconda3\lib\site-packages\moviepy\Clip.py in <lambda>(t)
    134 
    135         #mf = copy(self.make_frame)
--> 136         newclip = self.set_make_frame(lambda t: fun(self.get_frame, t))
    137 
    138         if not keep_duration:

~\Anaconda3\lib\site-packages\moviepy\Clip.py in <lambda>(gf, t)
    185             apply_to = []
    186 
--> 187         return self.fl(lambda gf, t: gf(t_func(t)), apply_to,
    188                        keep_duration=keep_duration)
    189 

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

~\Anaconda3\lib\site-packages\moviepy\decorators.py 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 

~\Anaconda3\lib\site-packages\moviepy\Clip.py in get_frame(self, t)
     91                 return frame
     92         else:
---> 93             return self.make_frame(t)
     94 
     95     def fl(self, fun, apply_to=None, keep_duration=True):

~\Anaconda3\lib\site-packages\moviepy\audio\io\AudioFileClip.py in <lambda>(t)
     75         self.buffersize = self.reader.buffersize
     76 
---> 77         self.make_frame = lambda t: self.reader.get_frame(t)
     78         self.nchannels = self.reader.nchannels
     79 

~\Anaconda3\lib\site-packages\moviepy\audio\io\readers.py in get_frame(self, tt)
    180                      (fr_min - self.buffer_startframe)
    181                           < len(self.buffer)):
--> 182                 self.buffer_around(fr_min)
    183             elif not (0 <=
    184                         (fr_max - self.buffer_startframe)

~\Anaconda3\lib\site-packages\moviepy\audio\io\readers.py in buffer_around(self, framenumber)
    238                 conserved = current_f_end - new_bufferstart + 1
    239                 chunksize = self.buffersize-conserved
--> 240                 array = self.read_chunk(chunksize)
    241                 self.buffer = np.vstack([self.buffer[-conserved:], array])
    242             else:

~\Anaconda3\lib\site-packages\moviepy\audio\io\readers.py in read_chunk(self, chunksize)
    111         chunksize = int(round(chunksize))
    112         L = self.nchannels*chunksize*self.nbytes
--> 113         s = self.proc.stdout.read(L)
    114         dt = {1: 'int8',2:'int16',4:'int32'}[self.nbytes]
    115         if hasattr(np, 'frombuffer'):

AttributeError: 'NoneType' object has no attribute 'stdout'

Code that produces error:

for idx, cut in enumerate(cut_times):
    clip = video.subclip(cut, cut+3.5)
    name = 'trial_%s.mp4' % idx
    clip.write_videofile(name)

Specs:

Python Version: 3.9.7
Moviepy Version: 1.0.3
Platform Name: Windows
Platform Version: 10

@rruopp rruopp added the question Questions regarding functionality, usage label Jul 6, 2022
@keikoro keikoro added the video Related to VideoClip and related classes, or handling of video in general. label Aug 9, 2022
@keikoro
Copy link
Collaborator

keikoro commented Oct 10, 2022

Closing because the referenced MoviePy version is quite old.

Please try again with the latest master – not the last PyPI release – and report back if the issue persists.

@keikoro keikoro closed this as completed Oct 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Questions regarding functionality, usage video Related to VideoClip and related classes, or handling of video in general.
Projects
None yet
Development

No branches or pull requests

2 participants