为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

噜噜哒 2023-06-27 14:32:21
我有一个时长 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变量都是包含相应文件位置的字符串。我不介意安装其他库。
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

set_fps我想我使用类的属性找到了解决方案Clip。事实上,该set_fps 函数返回具有修改后的 FPS 计数的剪辑副本。将转换应用于此副本时,您最终会得到正确的 FPS 数。

由于您没有提供可重现的示例,我使用了15 秒、24 FPS 并且没有声音的库存视频(重命名)。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


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信