VideoFileClip 切割视频

切换视频代码

video = VideoFileClip(video_fn)
video_dir = video_fn[:-4]+'_seg'
# video_base_name = os.path.splitext(os.path.basename(video_fn))[0]
# video_dir = os.path.join(output_dir, video_base_name)
os.makedirs(video_dir, exist_ok=True)
for start, end in scenes:
    cropped_video = video.subclip(start / video.fps, end / video.fps)
    output_path = f"{video_dir}/{start}_{end}.mp4"
    cropped_video.write_videofile(output_path, codec='libx264',audio=False)
    cropped_video.close()
video.close()

报错:

File "F:\project\qiege\TransNetV2-SBD-Visualize-master\transnetv2_demo.py", line 100, in predict_video cropped_video.write_videofile(output_path, codec='libx264') File "<decorator-gen-55>", line 2, in write_videofile File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration return f(clip, *a, **k) File "<decorator-gen-54>", line 2, in write_videofile File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default return f(clip, *new_a, **new_kw) File "<decorator-gen-53>", line 2, in write_videofile File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 22, in convert_masks_to_RGB return f(clip, *a, **k) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\video\VideoClip.py", line 293, in write_videofile self.audio.write_audiofile(audiofile, audio_fps, File "<decorator-gen-45>", line 2, in write_audiofile File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration return f(clip, *a, **k) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\AudioClip.py", line 206, in write_audiofile return ffmpeg_audiowrite(self, filename, fps, nbytes, buffersize, File "<decorator-gen-9>", line 2, in ffmpeg_audiowrite File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration return f(clip, *a, **k) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 166, in ffmpeg_audiowrite for chunk in clip.iter_chunks(chunksize=buffersize, File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\AudioClip.py", line 85, in iter_chunks yield self.to_soundarray(tt, nbytes=nbytes, quantize=quantize, File "<decorator-gen-44>", line 2, in to_soundarray File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration return f(clip, *a, **k) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\AudioClip.py", line 127, in to_soundarray snd_array = self.get_frame(tt) File "<decorator-gen-11>", line 2, in get_frame File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 89, in wrapper return f(*new_a, **new_kw) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\Clip.py", line 93, in get_frame return self.make_frame(t) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\Clip.py", line 136, in <lambda> newclip = self.set_make_frame(lambda t: fun(self.get_frame, t)) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\Clip.py", line 187, in <lambda> return self.fl(lambda gf, t: gf(t_func(t)), apply_to, File "<decorator-gen-11>", line 2, in get_frame File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\decorators.py", line 89, in wrapper return f(*new_a, **new_kw) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\Clip.py", line 93, in get_frame return self.make_frame(t) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\io\AudioFileClip.py", line 77, in <lambda> self.make_frame = lambda t: self.reader.get_frame(t) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\io\readers.py", line 186, in get_frame self.buffer_around(fr_max) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\io\readers.py", line 240, in buffer_around array = self.read_chunk(chunksize) File "D:\ProgramData\miniconda3\envs\py310\lib\site-packages\moviepy\audio\io\readers.py", line 113, in read_chunk s = self.proc.stdout.read(L) AttributeError: 'NoneType' object has no attribute 'stdout' [h264 @ 000001d994450580] Invalid NAL unit size (12042 > 10349). [h264 @ 000001d994450580] Error splitting the input into NAL units. [mov,mp4,m4a,3gp,3g2,mj2 @ 000001d6b1977480] stream 1, offset 0x2e90ad: partial file [mov,mp4,m4a,3gp,3g2,mj2 @ 000001d6b1977480] stream 0, offset 0x2e9157: partial file 

解决方法:

audio=False

代码:

cropped_video.write_videofile(output_path, codec='libx264',audio=False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值