python moviepy加速视频时竖屏被旋转拉伸成横屏修复

先上源码:

# -*- coding: gbk -*-
import os
import sys
from moviepy.editor import VideoFileClip, concatenate_videoclips
video= r'video.mp4'
resultFile= r'video_moviepy.mp4'
video = VideoFileClip(video,audio=False).resize([1080, 1920])
duration = video.duration
video = video.fl_time(lambda t: 1.5*t,
    apply_to=['mask','video','audio']
    ).set_end(duration/1.5)
video.write_videofile(resultFile,bitrate='862k')

其实这应该算是moviepy的一个bug,会旋转竖屏的视频,那么我们让他旋转回来,指定好固定的输出分辨率就好了。
比如原视频分辨率是1920*1080,那么我们指定分辨率为1080*1920,不就完成了旋转!
下面的"resize"就是改变分辨率的参数。

video = VideoFileClip(video).resize([1080, 1920])

当然,也可以更加智能,不需要指定固定分辨率,只需要if来判断下是否被旋转就好了。如果检测到被旋转,则将旋(video.rotation = 0)至设置为零,那么分辨率就自动帮我们输出成了1080*1920了。

if video.rotation in (90, 270):
    video = video.resize(video.size[::-1])
    video.rotation = 0

参考文献:
Portrait videos converted to landscape on load #586
https://github.com/Zulko/moviepy/issues/586

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值