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

write_videofile Error #330

Closed
tburrows13 opened this issue Oct 13, 2016 · 8 comments
Closed

write_videofile Error #330

tburrows13 opened this issue Oct 13, 2016 · 8 comments

Comments

@tburrows13
Copy link
Collaborator

tburrows13 commented Oct 13, 2016

from moviepy.editor import *
clip = VideoFileClip("vid.mov")
clip.write_videofile("movie.mp4")

^ Gives the error "TypeError: Can't convert 'bytes' object to str implicitly."

It prints "Building video movie.mp4" and "Writing audio in movieTEMP_MPY_wvf_snd.mp3" normally.
I am using python 3.2 with Raspian Wheezy.
What is wrong? Surely it should be a simple program...

@jeromegrosse
Copy link
Contributor

If I recall correctly, this is an incompatibility with Python 3 when another error happens. From the stacktrace, where is this error triggered? Does this helps?

@tburrows13
Copy link
Collaborator Author

[MoviePy] >>>> Building video movie.mp4
[MoviePy] Writing audio in movieTEMP_MPY_wvf_snd.mp3

0%| | 0/1047 [00:00<?, ?it/s]
2%|▏ | 17/1047 [00:00<00:06, 164.65it/s]
Traceback (most recent call last):
File "/home/pi/QuickFlicsPics/moviepytest.py", line 6, in
clip1.write_videofile("movie.mp4")
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 137, in use_clip_fps_by_default
return f(clip, _new_a, *_new_kw)
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 22, in convert_masks_to_RGB
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/video/VideoClip.py", line 331, in write_videofile
verbose=verbose)
File "", line 2, in write_audiofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/AudioClip.py", line 204, in write_audiofile
verbose=verbose, ffmpeg_params=ffmpeg_params)
File "", line 2, in ffmpeg_audiowrite
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 162, in ffmpeg_audiowrite
writer.write_frames(chunk)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 90, in write_frames
+ "\n\n"+ffmpeg_error))
TypeError: Can't convert 'bytes' object to str implicitly

@tburrows13
Copy link
Collaborator Author

Above is the entire output, triggered on line 3

@jeromegrosse
Copy link
Contributor

Look at the PR and modify manually /usr/local/lib/python3.2/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py, in particular:

-            ffmpeg_error = self.proc.stderr.read()
+            ffmpeg_error = str(self.proc.stderr.read())

on line 87.

After doing so, you should get another error, which is this time the real error from ffmpeg.

@tburrows13
Copy link
Collaborator Author

tburrows13 commented Oct 13, 2016

Right, it worked; error message below

@tburrows13
Copy link
Collaborator Author

tburrows13 commented Oct 13, 2016

Traceback (most recent call last):
File "/home/pi/QuickFlicsPics/moviepytest.py", line 6, in
clip1.write_videofile("movie.mp4")
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 137, in use_clip_fps_by_default
return f(clip, _new_a, *_new_kw)
File "", line 2, in write_videofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 22, in convert_masks_to_RGB
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/video/VideoClip.py", line 331, in write_videofile
verbose=verbose)
File "", line 2, in write_audiofile
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/AudioClip.py", line 204, in write_audiofile
verbose=verbose, ffmpeg_params=ffmpeg_params)
File "", line 2, in ffmpeg_audiowrite
File "/usr/local/lib/python3.2/dist-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, _a, *_k)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 162, in ffmpeg_audiowrite
writer.write_frames(chunk)
File "/usr/local/lib/python3.2/dist-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 122, in write_frames
raise IOError(error)
IOError: [Errno 32] Broken pipe

MoviePy error: FFMPEG encountered the following error while writing file movieTEMP_MPY_wvf_snd.mp3:

b"Unknown encoder 'libmp3lame'\n"

The audio export failed because FFMPEG didn't find the specified codec for audio encoding (libmp3lame). Please install this codec or change the codec when calling to_videofile or to_audiofile. For instance for mp3:
>>> to_videofile('myvid.mp4', audio_codec='libmp3lame')

@tburrows13
Copy link
Collaborator Author

Looks like I don't have libmp3lame installed...

@jeromegrosse
Copy link
Contributor

I guess that from this point, the error is pretty straightforward. The error says: Unknown encoder 'libmp3lame'. This means that your system does not have the mp3 LAME codec. You should look up where to download this codec for your system, as it differs greatly from a system to another.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants