环境准备

1、安装 FFmpeg

音/视频工具 FFmpeg 简易安装文档

2、安装 ffmpeg-python

pip3 install ffmpeg-python

3、【可选】安装 opencv-python

pip3 install opencv-python

4、【可选】安装 numpy

pip3 install numpy

视频帧提取

准备视频素材

抖音视频素材下载:https://anoyi.com/dy/top

基于视频帧数提取任意一帧

import ffmpeg import numpy import cv2 import sys import random def read_frame_as_jpeg(in_file, frame_num): """ 指定帧数读取任意帧 """ out, err = ( ffmpeg.input(in_file) .filter('select', 'gte(n,{})'.format(frame_num)) .output('pipe:', vframes=1, format='image2', vcodec='mjpeg') .run(capture_stdout=True) ) return out def get_video_info(in_file): """ 获取视频基本信息 """ try: probe = ffmpeg.probe(in_file) video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None) if video_stream is None: print('No video stream found', file=sys.stderr) sys.exit(1) return video_stream except ffmpeg.Error as err: print(str(err.stderr, encoding='utf8')) sys.exit(1) if __name__ == '__main__': file_path = '/Users/admin/Downloads/拜无忧.mp4' video_info = get_video_info(file_path) total_frames = int(video_info['nb_frames']) print('总帧数:' + str(total_frames)) random_frame = random.randint(1, total_frames) print('随机帧:' + str(random_frame)) out = read_frame_as_jpeg(file_path, random_frame) image_array = numpy.asarray(bytearray(out), dtype="uint8") image = cv2.imdecode(image_array, cv2.IMREAD_COLOR) cv2.imshow('frame', image) cv2.waitKey()

基于时间提取任意一帧

import ffmpeg import numpy import cv2 import sys import random def read_frame_by_time(in_file, time): """ 指定时间节点读取任意帧 """ out, err = ( ffmpeg.input(in_file, ss=time) .output('pipe:', vframes=1, format='image2', vcodec='mjpeg') .run(capture_stdout=True) ) return out def get_video_info(in_file): """ 获取视频基本信息 """ try: probe = ffmpeg.probe(in_file) video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None) if video_stream is None: print('No video stream found', file=sys.stderr) sys.exit(1) return video_stream except ffmpeg.Error as err: print(str(err.stderr, encoding='utf8')) sys.exit(1) if __name__ == '__main__': file_path = '/Users/admin/Downloads/拜无忧.mp4' video_info = get_video_info(file_path) total_duration = video_info['duration'] print('总时间:' + total_duration + 's') random_time = random.randint(1, int(float(total_duration)) - 1) + random.random() print('随机时间:' + str(random_time) + 's') out = read_frame_by_time(file_path, random_time) image_array = numpy.asarray(bytearray(out), dtype="uint8") image = cv2.imdecode(image_array, cv2.IMREAD_COLOR) cv2.imshow('frame', image) cv2.waitKey()

相关资料

https://github.com/kkroening/ffmpeg-python/tree/master/examples

将视频分成一帧一帧python_python ffmpeg任意提取视频帧的方法相关推荐

  1. Windows下 ffmpeg + labelImg 提取视频帧 得到图片集 并 标注图片 来 构造数据集

    构造数据集的流程 视频文件  >>  ffmpeg处理  >>  图片集  >>  labelImg进行标注  >>  标注好的数据集 准备ffmpeg ...

  2. FFmpeg批量提取视频的某一帧作为封面

    命令是这样的: ffmpeg -i input.flv -ss 00:00:02 -frames:v 1 out.png 说明: -i input.flv 截取的视频的名字 -ss 00:00:02 ...

  3. 【视频转PDF】Gleamoe Peanut 2023,轻松提取视频中的幻灯片!

    目录 Gleamoe Peanut 2023:==轻松提取视频中的幻灯片==,让学习与研究更高效 一.简介 软件特点 软件优点 二.软件界面 三.安装与使用 四.技术细节 处理逻辑 定位幻灯片的两种方 ...

  4. python 视频 特效_ffmpeg-python 任意提取视频帧

    ▶ 环境准备 1.安装 FFmpeg 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv-python pip3 install ...

  5. python读取视频流提取视频帧的两种方法_ffmpeg-python 任意提取视频帧

    ▶ 环境准备 1.安装 FFmpeg 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv-python pip3 install ...

  6. shell命令 ffmpeg 批量提取视频的音频文件

    ffmpeg命令提取音频,主要是for循环目录下的文件,判断是否是mp4结尾的文件,然后执行 ffmpeg命令. 下面上命令的代码 #! /bin/bash function rename() {cd ...

  7. transform video to frames/提取视频中的每一帧

    在处理视频数据的过程中,有时我们需要提取视频的每一帧来进行后续的处理,下面是python的脚本 需要环境opencv 1.文件 2.video2frame.py代码 import cv2 import ...

  8. 【Android FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视频基础 | MPEG-4 标准 | Android 开发环境 | FFMPEG 交叉编译 | 安卓项目导入配置 )

    本篇博客代码及资源下载 : https://download.csdn.net/download/han1202012/10382762 文章目录 一. 音视频基础 1. 音频基础 (1) 声音要素 ...

  9. python操作ffmpeg,做视频转码【上篇】

    本篇博客要落地的场景是使用 python + ffmpeg 实现将 mp4 文件转换为 m3u8 格式视频. 为了更好的结合二者,我们先学习一下 ffmpeg 如何使用. 文章目录 ffmpeg 运用 ...

最新文章

  1. 武器化道路越走越远的无人机
  2. 网络编程 TCP学习
  3. SpringMVC级联获取前台数据
  4. 关于ABST2的若干问题
  5. ffmpeg摄像头推流
  6. 收到计算机工程与应用的退修通知,《计算机工程与应用》退修意见
  7. 与非CCR代码互操作
  8. 1 CO配置-企业结构-定义-创建经营组织(Operating Concern)
  9. android intent-filter category,android intent-filter category.DEFAULT
  10. 添加和更改webstorm主题
  11. idea给main方法附带参数
  12. 神经网络控制系统设计,神经网络技术及其应用
  13. Everything To Byte And To Tensor -- Welcome to age of AI
  14. clover懒人_懒人气球驱动的互联网毕竟可能不是一个愚蠢的想法
  15. 盘点那些被AI换脸、一键“脱”衣所滥用的AI模型
  16. 算24(递归)--算法学习
  17. 华为S9300核心交换机链路聚合配置实例
  18. 自用推荐,heic格式转换工具
  19. 深信服上网行为管理——仅用户访问某个特定网站,其他行为拒绝策略
  20. 基于MATLAB的条形码识别系统

热门文章

  1. 里加一列为1_一素一菩提 @ 素牛排薯泥amp;百香龙珠气泡饮
  2. 实现文本编辑器的设计与实现_ArrayList实现分析(三)——迭代器的实现
  3. Python安装PyOpenGL
  4. 《高性能JavaScript》第七章 Ajax
  5. MATLAB机器学习系列-12:蚁群算法优化原理及其matlab实现
  6. wxWidgets:wxConfigPathChanger类用法
  7. boost::sort模块实现spreadsort wstring 排序示例
  8. boost::multiprecision模块cpp_bin_float_100相关的测试程序
  9. boost::mpi模块sendrecv() 操作的测试
  10. boost::mp11::mp_append相关用法的测试程序