1 Python使用命令行调用ffmpeg修改视频帧率,将60FPS的视频修改为30FPS的视频,视频时间保持不变

在上一篇FFmpeg - 修改视频帧率,将60FPS的视频修改为30FPS的视频,视频时间保持不变中,我们知道可以使用命令行

ffmpeg -i input.mp4 -filter:v fps=30 output.mp4

将60FPS的视频转换为30FPS的视频,那么我们可以通过在Python中调用ffmpeg命令行对输入视频进行处理,假设我们有一个60FPS的视频,我们现在要先将这个60FPS的视频转换为30FPS的视频,并删除原60FPS的视频,将30FPS的视频名重命名为30FPS的视频

示例代码如下:

import subprocess
import os

def change_video_framerate(input_video_path):
    splitext = os.path.splitext(input_video_path)
    output_video_path = splitext[0] + "-out" + splitext[1]

    t_ffmpegcmdline = 'ffmpeg -i "{0}" -filter:v fps=30 "{1}"'.format(input_video_path, output_video_path)
    #returncode = subprocess.call(t_ffmpegcmdline)
    p = subprocess.Popen(t_ffmpegcmdline, shell=True)
    p.wait()

    if os.path.exists(input_video_path):
        os.remove(input_video_path)

    if os.path.exists(output_video_path):
        os.rename(output_video_path, input_video_path)


if __name__ == '__main__':
    change_video_framerate(r"example.mp4")