如何解决如何使用python加速视频而不降低帧频
我有一个长度为1:24分钟的视频,其fps为10,没有任何声音。我需要视频下降到28秒并向其中添加声音,而不会丢帧,并明显提高fps。我试图用MoviePy
来做到这一点。
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
变量都是包含相应文件位置的字符串。
我不介意安装其他库。
解决方法
我认为我使用set_fps
类的Clip
属性找到了解决方案。实际上,set_fps
function返回的剪辑副本具有修改后的FPS计数。将转换应用于此副本时,最终得到正确数量的FPS。
由于您没有提供可复制的示例,因此我使用了15秒,24 FPS且无声音的stock video(重命名为dummy_in.mp4
)。使用此代码,我得到了5秒的剪辑和72 FPS:
from moviepy.editor import VideoFileClip
import moviepy.video.fx.all as vfx
in_loc = 'dummy_in.mp4'
out_loc = 'dummy_out.mp4'
# Import video clip
clip = VideoFileClip(in_loc)
print("fps: {}".format(clip.fps))
# Modify the FPS
clip = clip.set_fps(clip.fps * 3)
# Apply speed up
final = clip.fx(vfx.speedx,3)
print("fps: {}".format(final.fps))
# Save video clip
final.write_videofile(out_loc)
它产生以下输出:
fps: 23.976023976023978
fps: 71.92807192807193
Moviepy - Building video dummy_out.mp4.
Moviepy - Writing video dummy_out.mp4
Moviepy - Done !
Moviepy - video ready dummy_out.mp4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。