如何使用 python 加速视频而不丢帧

我有一个时长 1 分 24 秒、帧速率为 10、没有任何声音的视频。我需要将视频缩短至 28 秒并添加声音,而不丢帧,并明显提高 fps。我试图用MoviePyto 来完成这个任务。


clip = VideoFileClip(in_loc)

final = clip.fx(vfx.speedx, 3)

final.write_videofile(out_loc, audio=audio_loc)

但当我检查文件的详细信息时,文件仍然是 10 fps。所以这个方法有丢帧的情况。然后我尝试了以下代码。


clip.write_videofile(out_loc, fps=30, audio=audio_loc)

尽管 fps 属性已增加到 30,但生成的文件仍然长 1 分 24 秒。

我该如何实现此目的?


注意:所有_loc变量都是包含相应文件位置的字符串。

我不介意安装其他库。


噜噜哒
浏览 201回答 1
1回答

holdtom

set_fps我想我使用类的属性找到了解决方案Clip。事实上,该set_fps 函数返回具有修改后的 FPS 计数的剪辑副本。将转换应用于此副本时,您最终会得到正确的 FPS 数。由于您没有提供可重现的示例,我使用了15 秒、24 FPS 并且没有声音的库存视频(重命名)。dummy_in.mp4我最终使用以下代码得到了 5 秒的剪辑和 72 FPS:from moviepy.editor import VideoFileClipimport moviepy.video.fx.all as vfxin_loc = 'dummy_in.mp4'out_loc = 'dummy_out.mp4'# Import video clipclip = VideoFileClip(in_loc)print("fps: {}".format(clip.fps))# Modify the FPSclip = clip.set_fps(clip.fps * 3)# Apply speed upfinal = clip.fx(vfx.speedx, 3)print("fps: {}".format(final.fps))# Save video clipfinal.write_videofile(out_loc)它产生这样的输出:fps: 23.976023976023978fps: 71.92807192807193Moviepy - Building video dummy_out.mp4.Moviepy - Writing video dummy_out.mp4Moviepy - Done !Moviepy - video ready dummy_out.mp4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python