使用FFmpeg将视频帧转换为png图像

这篇具有很好参考价值的文章主要介绍了使用FFmpeg将视频帧转换为png图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

一个使用ffmpeg多进程将大量mp4文件转换为对应多帧png/jpg/bmp等图片文件的代码实例,其中png存储于与视频同名的文件夹当中。


一、核心命令

ffmpeg -i *.mp4 -s 256x256 -r 25 %8d.png

其中 -i 指 输入地址
-s 指定图片分辨率
-r 指定帧数

二、代码实例

核心思想使用 multiprocessing 读取 MP4 文件列表,更改命名方式进行存储文章来源地址https://www.toymoban.com/news/detail-622275.html

import os
import argparse
from typing import List, Dict
from multiprocessing import Pool
import subprocess
from subprocess import Popen, PIPE
from glob import glob
from tqdm import tqdm, trange


def clip_vid2png(source_dir: os.PathLike, output_dir: os.PathLike, num_workers: int):
    os.makedirs(output_dir, exist_ok=True)
    # os.makedirs(os.path.join(output_dir, '_videos_raw'), exist_ok=True)
    import pdb;pdb.set_trace()
    video_queue = construct_video_queue(source_dir)
    task_kwargs = [dict(
        video_path=vd,  # 视频路径
        png_path= os.path.join(output_dir, os.path.basename(vd))# 图像存储路径
     ) for vd in video_queue]
    pool = Pool(processes=num_workers)
    tqdm_kwargs = dict(total=len(task_kwargs), desc=f'Clips videos into {output_dir}')

    for _ in tqdm(pool.imap_unordered(task_proxy_clip, task_kwargs), **tqdm_kwargs):
        pass

    print('Clip is finished')


def construct_video_queue(source_dir: os.PathLike) -> List[Dict]:
    video_queue = sorted(glob(os.path.join(source_dir, "*.mp4")))
    return video_queue

def task_proxy_clip(kwargs):
    return clip_video(**kwargs)

def clip_video(video_path, png_path):
    os.makedirs(png_path, exist_ok=True)
    command = [
            "ffmpeg",
            "-loglevel", "quiet", 
            "-i",
            f"{video_path}", 
            "-s", "256x256",
            "-r", "25",
            f"{png_path}/%08d.png"
        ]
    return_code = subprocess.call(command)
    return return_code


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="clip video to png")
    parser.add_argument('-s', '--source_dir', type=str, default=None, help='Path to the directory with the dataset')
    parser.add_argument('-o', '--output_dir', type=str, default=None, help='Where to save the videos?')
    parser.add_argument('-w', '--num_workers', type=int, default=4, help='Number of workers for downloading')
    args = parser.parse_args()

    clip_vid2png(
        args.source_dir,
        args.output_dir,
        args.num_workers,
    )

到了这里,关于使用FFmpeg将视频帧转换为png图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

    执行 命令 , 将 输入文件 input.mp4 中的 第 2 秒 开始的 1 帧数据 转为一张 848x480 像素的图片 , 输出到 output.jpg 文件中 ; 上述命令解析 : -i input.mp4 : 指定输入文件为 input.mp4 , -i 参数用于设置输入文件 ; -y : 设置 如果输出文件已存在 , 直接覆盖 , 如果不设置该选项 , 会中断执行

    2024年04月23日
    浏览(47)
  • 视频行为分析——视频图像转换与ffmpeg相关操作

    工具类说明 1.1 视频输出gif 1.2 将文件夹下图片转视频 2.1 ffmpeg安装 FFmpeg 的官方网站(https://ffmpeg.org/)上找到更详细的安装文档和指南。 2.1.1 linux 安装 编译安装:如果你需要更新或自定义的 FFmpeg 版本,你可以从源代码编译安装。你可以从 FFmpeg 的官方网站下载源代码,并按

    2024年02月11日
    浏览(36)
  • 使用ffmpeg命令进行视频格式转换

    FFmpeg 是一个非常强大和灵活的开源工具集,用于处理音频和视频文件。它提供了一系列的工具和库,可以用于录制、转换、流式传输和播放音频和视频。 FFmpeg 主要特点如下: 格式支持广泛:FFmpeg 支持几乎所有的音频和视频格式,包括非常流行的格式如 MP4, AVI, MOV, MP3, AAC 等

    2024年02月04日
    浏览(43)
  • 使用ffmpeg生成测试视频和图片

    要使用FFmpeg生成测试视频和图片,需要安装FFmpeg,并使用命令行工具执行相应的命令。 一、生成测试视频 创建一个测试视频源文件 test.mp4: ffmpeg -f lavfi -i testsrc=duration=5:size=1280x720:rate=30 test.mp4 上述命令可以生成一个时长为5秒,分辨率为1280x720,帧率为30的测试视频源文件t

    2023年04月11日
    浏览(37)
  • 使用 ffmpeg 命令将视频转图片

    因为要从视频中提取只出现了一瞬间的画面,所以需要将视频转为图片。这里就使用 ffmpeg 进行操作,FFmpeg 配置参考:https://blog.csdn.net/BeanGo/article/details/128918136 我这里是在 Windows 下使用,之前有配置过 ffmpeg,直接使用就行。 注: Windows 下路径连接用 “”,Linux 下用 “/”

    2024年02月11日
    浏览(40)
  • python使用ffmpeg合并多张图片成视频

    注意: 需要在本地有ffmpeg,并且配置环境变量 下载链接如下:https://download.csdn.net/download/qq_30273575/87898080 # FFmpeg 将多张图片合成视频 # 可以使用 FFmpeg 库来将多张图片合成视频,下面是一个简单的示例: # 在代码中,需要提供存储图片的文件夹路径 images_path 和最终生成的视频

    2024年02月11日
    浏览(46)
  • C#:使用ffmpeg将图片合并成视频

    最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。 合并视频,主要可以借用OpenCV 和 ffmpeg,这里是尝试用ffmpeg.exe的工具去实现图片文件合并成视频。 输入存储视

    2024年02月01日
    浏览(35)
  • python ffmpeg 使用 pyav 转换 一组图像 到 视频

    2022/8/4 更新 支持加入水印 水印必须包含透明图像,并且水印图像大小要等于原图像的大小 2022/6/21 更新 让命令行参数更加易用 新的命令行使用方法 FFMPEG 命令行转换 一组JPG图像 到视频时,是将这组图像视为 MJPG 流。 我需要转换一组 PNG 图像到视频,FFMPEG 就不认了。 pyav内置

    2024年02月02日
    浏览(42)
  • 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

    音视频 文件 从 采样 - 处理 - 得到原始数据帧队列 - 音视频编码 - 音视频包队列 - 格式封装 的过程如下 : 封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装

    2024年04月17日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包