使用ffmpegpython将视频分割为图像

2024-06-28 15:39:10 发布

您现在位置:Python中文网/ 问答频道 /正文

据我所知^{}是Python中直接操作ffmpeg的主包

现在,我想拍摄一段视频,并将其帧以fps格式保存为单独的文件

有很多命令行方法可以做到这一点,例如ffmpeg -i video.mp4 -vf fps=1 img/output%06d.pngdescribed here

但是我想用Python来做。还有一些解决方案[1][2]使用Python的subprocess调用ffmpegCLI,但对我来说它看起来很脏

有没有办法用ffmpeg-python来实现它


Tags: 文件方法命令行img视频herevideo格式
3条回答

您也可以使用openCV来实现这一点

参考代码:

import cv2

video_capture = cv2.VideoCapture("your_video_path")
video_capture.set(cv2.CAP_PROP_FPS, <your_desired_fps_here>)

saved_frame_name = 0

while video_capture.isOpened():
    frame_is_read, frame = video_capture.read()

    if frame_is_read:
        cv2.imwrite(f"frame{str(saved_frame_name)}.jpg", frame)
        saved_frame_name += 1

    else:
        print("Could not read the frame.")

我建议您尝试imageio module,并使用以下代码作为起点:

import imageio

reader = imageio.get_reader('imageio:cockatoo.mp4')

for frame_number, im in enumerate(reader):
    # im is numpy array
    if frame_number % 10 == 0:
        imageio.imwrite(f'frame_{frame_number}.jpg', im)

以下是我的作品:

ffmpeg
.input(url)
.filter('fps', fps='1/60')
.output('thumbs/test-%d.jpg', 
        start_number=0)
.overwrite_output()
.run(quiet=True)

相关问题 更多 >