python moviepy视频时间加速导致音频变调的修复方法

先上源代码,功能是只对视频"video.mp4"进行1.5倍加速,不输出音频。

# -*- coding: gbk -*-
import os
import sys
from moviepy.editor import VideoFileClip
video= r'video.mp4'
resultFile= r'video_moviepy.mp4'
video = VideoFileClip(video,audio=False)
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='2412k')

moviepy加速有一个弊端,就是音频加速后声音会变调。实在没找到解决的参数,只能配合ffmpeg进行单独加速音频再合并。

首先,我们可以省去提取去掉音频的视频步骤,在VideoFileClip函数里面加上audio=False不输出音频。
然后再用ffmpeg把原视频的音频单独提取出来:

ffmpeg -i "video.mp4" -y "video.mp3"

然后再对音频进行加速但不变调处理:

ffmpeg -i "video.mp3" -filter:a "atempo=1" -y "video_output.mp3

最后将加速过后的音视频进行合并:

ffmpeg -i "video_moviepy.mp4" -i "video_output.mp3" -vcodec copy -acodec copy -y "video_output.mp4"

参考文献:
python调整视频播放速度
https://blog.csdn.net/SnailPace/article/details/107357678

ffmpeg 调整音视频播放速度
https://my.oschina.net/u/2367476/blog/1575087

ffmpeg常用滤镜命令
https://blog.csdn.net/hutianyou123/article/details/78999804

你可能感兴趣的:(python)