lines = [msg for msg in subtitles.split('\n') if len(msg)>0]
speech= []
for i,msg in enumerate(lines):
ts.text_to_mp3(msg,'subtitle-voiceover-{:04d}.mp3'.format(i))
speech.append(AudioFileClip('subtitle-voiceover-{:04d}.mp3'.format(i)))
duration = np.array([0]+[s.duration for s in speech])
cumduration = np.cumsum(duration)
total_duration = int(cumduration[-1])+4
generator = lambda txt: TextClip(txt, font='msjh.ttc', fontsize=32, color='white')
subtitles = SubtitlesClip([((cumduration[i],cumduration[i+1]),s) for i,s in enumerate(lines)], generator)
error:
Traceback (most recent call last):
File "c:\Users\April\OneDrive\文件\桌面\machine_visual\audio.py", line 88, in
final_clip = final_clip.set_audio(CompositeAudioClip([clip.audio,baudio1,concatenate_audioclips(speech)]))
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\moviepy\audio\AudioClip.py", line 286, in init
ends = [c.end for c in self.clips]
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\moviepy\audio\AudioClip.py", line 286, in
ends = [c.end for c in self.clips]
AttributeError: 'NoneType' object has no attribute 'end'
Exception ignored on calling ctypes callback function: <function catch_errors..call_with_this at 0x0000028340C627A0>
Traceback (most recent call last):
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\comtypes_comobject.py", line 113, in call_with_this
File "C:\Users\April\anaconda3\envs\class3637\lib\logging__init.py", line 1505, in error
File "C:\Users\April\anaconda3\envs\class3637\lib\logging\init__.py", line 1734, in isEnabledFor
TypeError: 'NoneType' object is not callable
moviepy:1.0.3
python:3.10.13
How can i solve those problems?
code:
source_video_filename = "040ooo.mp4" background_music_filename = "calm-background-for-video-121519.mp3" target_video_with_subtitle= "040ooo_subtitle.mp4"
lines = [msg for msg in subtitles.split('\n') if len(msg)>0] speech= []
for i,msg in enumerate(lines): ts.text_to_mp3(msg,'subtitle-voiceover-{:04d}.mp3'.format(i))
speech.append(AudioFileClip('subtitle-voiceover-{:04d}.mp3'.format(i)))
duration = np.array([0]+[s.duration for s in speech])
cumduration = np.cumsum(duration) total_duration = int(cumduration[-1])+4
generator = lambda txt: TextClip(txt, font='msjh.ttc', fontsize=32, color='white') subtitles = SubtitlesClip([((cumduration[i],cumduration[i+1]),s) for i,s in enumerate(lines)], generator)
clip = VideoFileClip(source_video_filename) clip = clip.fx(vfx.speedx,clip.duration/total_duration)
final_clip = CompositeVideoClip([clip, subtitles.set_pos(('center','bottom'))])
background_music = AudioFileClip(background_music_filename) baudio1 = background_music.subclip(background_music.duration-total_duration).volumex(0.2)
final_clip = final_clip.set_audio(CompositeAudioClip([clip.audio,baudio1,concatenate_audioclips(speech)]))
final_clip.write_videofile(target_video_with_subtitle)
error: Traceback (most recent call last): File "c:\Users\April\OneDrive\文件\桌面\machine_visual\audio.py", line 88, in
final_clip = final_clip.set_audio(CompositeAudioClip([clip.audio,baudio1,concatenate_audioclips(speech)]))
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\moviepy\audio\AudioClip.py", line 286, in init
ends = [c.end for c in self.clips]
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\moviepy\audio\AudioClip.py", line 286, in
ends = [c.end for c in self.clips]
AttributeError: 'NoneType' object has no attribute 'end'
Exception ignored on calling ctypes callback function: <function catch_errors..call_with_this at 0x0000028340C627A0>
Traceback (most recent call last):
File "C:\Users\April\anaconda3\envs\class3637\lib\site-packages\comtypes_comobject.py", line 113, in call_with_this
File "C:\Users\April\anaconda3\envs\class3637\lib\logging__init.py", line 1505, in error
File "C:\Users\April\anaconda3\envs\class3637\lib\logging\init__.py", line 1734, in isEnabledFor
TypeError: 'NoneType' object is not callable
moviepy:1.0.3 python:3.10.13 How can i solve those problems?