如何在Python中调整视频剪辑大小

23
我希望在Python 2.7中调整视频剪辑的大小。
例如,我们提供了具有1080p质量的“movie.mp4”文件, 结果应该是具有360p质量的“movie.mp4”。
我认为Moviepy应该有解决方案。如果您知道它的解决方案, 我将不胜感激。
请注意保留原文中的HTML标签。

1
你有没有阅读过文档 http://zulko.github.io/moviepy/ref/videofx/moviepy.video.fx.all.resize.html?highlight=resize#moviepy.video.fx.all.resize? - dragon2fly
3个回答

48

以下是使用moviepy调整电影大小的方法: 在此处查看moviepy文档

import moviepy.editor as mp
clip = mp.VideoFileClip("movie.mp4")
clip_resized = clip.resize(height=360) # make the height 360px ( According to moviePy documenation The width is then computed so that the width/height ratio is conserved.)
clip_resized.write_videofile("movie_resized.mp4")

你还可以通过在最后一行添加参数bitrate="500k"bitrate="5000k"来调整质量。

如上所述,您也可以直接使用ffmpeg,如果您只需要一个快速脚本,这将更简单。


3
如果你想自由设置宽度和高度而不必坚持相对比例的 w:h,你可以使用 newsize 参数,例如:clip_resized = clip.resize(newsize=(my_width,my_height)) - Zahra

10
为什么不使用ffmpeg?
ffmpeg -i movie.mp4 -vf scale=640:360 movie_360p.mp4

如果使用640:-2,则在此示例中,比例滤镜将保持纵横比并自动计算正确的高度。
查看H.264编码指南以获取其他选项。

我该如何在Python中使用它? - Seyed Ali Akhavani
2
请记住,使用os.system启动外部程序并不总是安全的。 - Unknown
4
如果您使用640:-2,那么在此示例中,比例滤镜将保持纵横比并自动计算正确的高度。 - llogan
1
你可以使用 subprocess 来运行命令... 如果出现任何错误,你都可以捕获它们。 - Pyzard
我在使用Postman获取媒体并将其传递给subprocess.run(f'ffmpeg -i {media} -vcodec h264 -acodec mp2 temp_location/{new_uuid}')时遇到了错误。错误信息为:wa.mp4: 没有这个文件或目录 - MdHassan413
显示剩余2条评论

3

Moviepy缩放函数

>>> myClip.resize( (460,720) ) # New resolution: (460,720)
>>> myClip.resize(0.6) # width and heigth multiplied by 0.6
>>> myClip.resize(width=800) # height computed automatically.
>>> myClip.resize(lambda t : 1+0.02*t) # slow swelling of the clip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接