在 Python 中提取视频帧 [英] Extract Video Frames In Python

查看:23
本文介绍了在 Python 中提取视频帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想提取视频帧并将它们保存为图像.

import os, sys从 PIL 导入图像a, b, c = os.popen3("ffmpeg -i test.avi")out = c.read()dp = out.index("持续时间:")持续时间 = 输出[dp+10:dp+out[dp:].index(",")]hh, mm, ss = map(float, duration.split(":"))总计 = (hh*60 + mm)*60 + ss对于 xrange(9) 中的 i:t = (i + 1) * 总数/10os.system("ffmpeg -i test.avi -ss %0.3fs frame%i.png" % (t, i))

但是我有这个错误:

FFmpeg 版本 CVS,版权所有 (c) 2000-2004 Fabrice BellardffmpegX 的 Mac OSX 通用构建配置: --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264libavutil 版本:49.0.0libavcodec 版本:51.9.0libavformat 版本:50.4.0构建于 2006 年 4 月 15 日 04:58:19,gcc:4.0.1(Apple Computer, Inc. build 5250)输入 #0,avi,来自 'test.avi':持续时间:00:00:30.5,开始:0.000000,比特率:465 kb/s流 #0.0, 25.00 fps(r): 视频: mpeg4, yuv420p, 640x480流 #0.1:音频:mp3,32000 Hz,单声道,32 kb/s无法为frame0.png"找到合适的输出格式

ffmpeg -formats

FFmpeg 版本 CVS,版权所有 (c) 2000-2004 Fabrice BellardffmpegX 的 Mac OSX 通用构建配置: --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264libavutil 版本:49.0.0libavcodec 版本:51.9.0libavformat 版本:50.4.0构建于 2006 年 4 月 15 日 04:58:19,gcc:4.0.1(Apple Computer, Inc. build 5250)文件格式:E 3g2 3gp2 格式E 3gp 3gp 格式D 4xm 4X 技术格式D RoQ Id RoQ 格式DAC ADTS AACDE ac3 原始 ac3电子广告 ADTS AACDE aiff 音频 IFFDE alaw pcm 一种法律格式DE amr 3gpp amr 文件格式DE asf asf 格式E asf_stream asf 格式DE au SUN AU 格式DE avi avi 格式D avs avs 格式e crc crc测试格式D daud D-Cinema 音频格式D dts 原始 dtsDE dv DV 视频格式E DVD MPEG2 PS 格式 (DVD VOB)电子艺界多媒体格式DE ffm ffm 格式D film_cpk 世嘉 FILM/CPK 格式D flic FLI/FLC/FLX 动画格式DE flv flv 格式E framecrc framecrc测试格式DE gif GIF 动画DE h261 生 h261DE h263 原始 h263DE h264 原始 H264 视频格式D idcin Id CIN 格式DE图像图像序列DE image2 image2 序列DE image2pipe 管道图像2序列DE imagepipe 管道图像序列D ingenient Ingenient MJPEGD ipmovie Interplay MVE 格式DE m4v 原始 MPEG4 视频格式D matroska Matroska 文件格式DE mjpeg MJPEG 视频D mm 美国激光游戏 MM 格式DE mmf mmf 格式E mov mov 格式D mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG4/Motion JPEG 2000 格式E mp2 MPEG 音频第 2 层DE mp3 MPEG 音频第 3 层E mp4 mp4 格式DE mpeg MPEG1 系统格式E mpeg1video MPEG 视频E mpeg2video MPEG2 视频DE mpegts MPEG2 传输流格式D mpegvideo MPEG 视频E mpjpeg Mime 多部分 JPEG 格式DE mulaw pcm mu 律格式D nsv NullSoft 视频格式E 空空视频格式DE 螺母螺母格式D nuv Nuppel 视频格式多格奥格E psp psp mp4 格式D psxstr Sony Playstation STR 格式DE rawvideo 原始视频格式D redir 重定向器格式DE rm rm 格式E rtp RTP 输出格式D rtsp RTSP 输入格式DE s16be pcm 有符号 16 位大端格式DE s16le pcm 有符号 16 位小端格式DE s8 pcm 有符号 8 位格式D SDP SDPD shn 原料缩短D smk Smacker 视频D sol Sierra SOL 格式E svcd MPEG2 PS 格式 (VOB)DE swf Flash 格式D tta 真音频DE u16be pcm 无符号 16 位大端格式DE u16le pcm 无符号 16 位小端格式DE u8 pcm 无符号 8 位格式E vcd MPEG1 系统格式 (VCD)D vmd Sierra VMD 格式E vob MPEG2 PS 格式 (VOB)DE voc 创意语音文件格式DE wav wav 格式D wc3movie Wing Commander III 电影格式D wsaud Westwood Studios 音频格式D wsvqa Westwood Studios VQA 格式DE yuv4mpegpipe YUV4MPEG 管道格式图像格式(文件扩展名,如果有,请遵循):德 gif gif编解码器:DV 4xmD V D 8bpsDEA AACD V D aascDEA ac3DEA adpcm_4xmDEA adpcm_adxDEA adpcm_ctDEA adpcm_eaDEA adpcm_ima_dk3DEA adpcm_ima_dk4DEA adpcm_ima_qtDEA adpcm_ima_smjpegDEA adpcm_ima_wavDEA adpcm_ima_wsDEA adpcm_msDEA adpcm_sbpro_2DEA adpcm_sbpro_3DEA adpcm_sbpro_4DEA adpcm_swfDEA adpcm_xaDEA adpcm_yamaha阿拉克DEA amr_nbDEA amr_wbDEV D asv1DEV D asv2D V D AVDV bmpD V D camstudioD V D camtasiaD V D 电影D V D cljrD 一个厨师D V D cyuvDES dvbsubDES 影碟机DEV D dvvideo开发者 D ffv1DEVSD ffvhuffD A flacD V D 电影开发板D V D frapsDEA g726DEV D h261DEVSDT h263D VSD h263i电动车 h263pDEV DT h264DEVSD huffyuvD V D idcin视频D V D indeo2DV indeo3D A interplay_dpcmD V D 互动视频EV JPEGDVkmvcEV lpegD V D 机车D 狼牙棒3D 狼牙棒6D V D mdecDEV D mjpegD V D mjpegbD V D 毫米视频DEA mp2迪奥 mp3D A mp3aduD A mp3on4DEVSDT mpeg1videoDEVSDT mpeg2videoDEVSDT mpeg4D 一个 mpeg4aacD VSDT mpegvideoDEVSD msmpeg4DEVSD msmpeg4v1DEVSD msmpeg4v2D V D msrleD V D msvideo1D V D mszhD V D nuv开发包开发板DEA pcm_alawDEA pcm_mulawDEA pcm_s16beDEA pcm_s16leDEA pcm_s24beDEA pcm_s24daudDEA pcm_s24leDEA pcm_s32beDEA pcm_s32leDEA pcm_s8DEA pcm_u16beDEA pcm_u16leDEA pcm_u24beDEA pcm_u24leDEA pcm_u32beDEA pcm_u32leDEA pcm_u8开发程序开发人员开发 PNGDEV ppmD A qdm2D V D qdrawD V D qpegD V D Qtrle开发者原始视频D A real_144D A real_288D A roq_dpcmD V D roqvideoD V D rpza开发者 RV10DEV RV20D A 缩短D A smackaudD V smackvidD V D smcDEV雪D A sol_dpcmDEA 声波EA超音速D V D sp5xDEV D SVQ1D VSD SVQ3DV理论D V D truemotion1D V D truemotion2D 真话达塔D V DultimotionDV vc9D V D VCR1D A vmdaudioD V D vmdvideoD A vorbisDV vp3D V D vqavideoD A wmav1D A wmav2DEVSD wmv1DEVSD wmv2D V D wnv1D A ws_snd1D A xan_dpcmD V D xan_wc3D V D xl电动车 xvidDEV D zlibDV zmbv支持的文件协议:文件:管道:udp:rtp:tcp:http:帧大小、帧率缩写:ntsc pal qntsc qpal sntsc spal 薄膜 ntsc-film sqcif qcif cif 4cif运动估计方法:零(最快)满(最慢)日志 phods epzs(默认)x1 hex umh iter注意,编码器和解码器的名称并不总是匹配,所以有上表仅显示编码器或仅解码器条目的几种情况即使同时支持编码和解码,例如,h263解码器对应于 h263 和 h263p 编码器,对于文件格式,其偶数更差

我的代码有什么问题?提前致谢

解决方案

ffmpeg 抱怨文件名中缺少 %d,因为您已要求它转换多个帧.

这篇文章 表明这将是使用 ffmpeg 提取单帧的更好方法

ffmpeg -i n.wmv -ss 00:00:20 -t 00:00:1 -s 320×240 -r 1 -f singlejpeg myframe.jpg

[编辑]

稍后更多研究,这是一个可以输出单个 png 帧的命令行

ffmpeg -i test.avi -vcodec png -ss 10 -vframes 1 -an -f rawvideo test.png

在我的 ubuntu 12.04 笔记本电脑上测试

I want to extract video frames and save them as image.

import os, sys
from PIL import Image

a, b, c = os.popen3("ffmpeg -i test.avi")
out = c.read()
dp = out.index("Duration: ")
duration = out[dp+10:dp+out[dp:].index(",")]
hh, mm, ss = map(float, duration.split(":"))
total = (hh*60 + mm)*60 + ss
for i in xrange(9):
    t = (i + 1) * total / 10
    os.system("ffmpeg -i test.avi -ss %0.3fs frame%i.png" % (t, i))

But I have this error:

FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard
Mac OSX universal build for ffmpegX
  configuration:  --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264 
  libavutil version: 49.0.0
  libavcodec version: 51.9.0
  libavformat version: 50.4.0
  built on Apr 15 2006 04:58:19, gcc: 4.0.1 (Apple Computer, Inc. build 5250)
Input #0, avi, from 'test.avi':
  Duration: 00:00:30.5, start: 0.000000, bitrate: 465 kb/s
  Stream #0.0, 25.00 fps(r): Video: mpeg4, yuv420p, 640x480
  Stream #0.1: Audio: mp3, 32000 Hz, mono, 32 kb/s
Unable for find a suitable output format for 'frame0.png'

Edit: ffmpeg -formats

FFmpeg version CVS, Copyright (c) 2000-2004 Fabrice Bellard
Mac OSX universal build for ffmpegX
  configuration:  --enable-memalign-hack --enable-mp3lame --enable-gpl --disable-vhook --disable-ffplay --disable-ffserver --enable-a52 --enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads --enable-x264 
  libavutil version: 49.0.0
  libavcodec version: 51.9.0
  libavformat version: 50.4.0
  built on Apr 15 2006 04:58:19, gcc: 4.0.1 (Apple Computer, Inc. build 5250)
File formats:
  E 3g2             3gp2 format
  E 3gp             3gp format
 D  4xm             4X Technologies format
 D  RoQ             Id RoQ format
 D  aac             ADTS AAC
 DE ac3             raw ac3
  E adts            ADTS AAC
 DE aiff            Audio IFF
 DE alaw            pcm A law format
 DE amr             3gpp amr file format
 DE asf             asf format
  E asf_stream      asf format
 DE au              SUN AU Format
 DE avi             avi format
 D  avs             avs format
  E crc             crc testing format
 D  daud            D-Cinema audio format
 D  dts             raw dts
 DE dv              DV video format
  E dvd             MPEG2 PS format (DVD VOB)
 D  ea              Electronic Arts Multimedia Format
 DE ffm             ffm format
 D  film_cpk        Sega FILM/CPK format
 D  flic            FLI/FLC/FLX animation format
 DE flv             flv format
  E framecrc        framecrc testing format
 DE gif             GIF Animation
 DE h261            raw h261
 DE h263            raw h263
 DE h264            raw H264 video format
 D  idcin           Id CIN format
 DE image           image sequence
 DE image2          image2 sequence
 DE image2pipe      piped image2 sequence
 DE imagepipe       piped image sequence
 D  ingenient       Ingenient MJPEG
 D  ipmovie         Interplay MVE format
 DE m4v             raw MPEG4 video format
 D  matroska        Matroska file format
 DE mjpeg           MJPEG video
 D  mm              American Laser Games MM format
 DE mmf             mmf format
  E mov             mov format
 D  mov,mp4,m4a,3gp,3g2,mj2 QuickTime/MPEG4/Motion JPEG 2000 format
  E mp2             MPEG audio layer 2
 DE mp3             MPEG audio layer 3
  E mp4             mp4 format
 DE mpeg            MPEG1 System format
  E mpeg1video      MPEG video
  E mpeg2video      MPEG2 video
 DE mpegts          MPEG2 transport stream format
 D  mpegvideo       MPEG video
  E mpjpeg          Mime multipart JPEG format
 DE mulaw           pcm mu law format
 D  nsv             NullSoft Video format
  E null            null video format
 DE nut             nut format
 D  nuv             NuppelVideo format
 D  ogg             Ogg
  E psp             psp mp4 format
 D  psxstr          Sony Playstation STR format
 DE rawvideo        raw video format
 D  redir           Redirector format
 DE rm              rm format
  E rtp             RTP output format
 D  rtsp            RTSP input format
 DE s16be           pcm signed 16 bit big endian format
 DE s16le           pcm signed 16 bit little endian format
 DE s8              pcm signed 8 bit format
 D  sdp             SDP
 D  shn             raw shorten
 D  smk             Smacker Video
 D  sol             Sierra SOL Format
  E svcd            MPEG2 PS format (VOB)
 DE swf             Flash format
 D  tta             true-audio
 DE u16be           pcm unsigned 16 bit big endian format
 DE u16le           pcm unsigned 16 bit little endian format
 DE u8              pcm unsigned 8 bit format
  E vcd             MPEG1 System format (VCD)
 D  vmd             Sierra VMD format
  E vob             MPEG2 PS format (VOB)
 DE voc             Creative Voice File format
 DE wav             wav format
 D  wc3movie        Wing Commander III movie format
 D  wsaud           Westwood Studios audio format
 D  wsvqa           Westwood Studios VQA format
 DE yuv4mpegpipe    YUV4MPEG pipe format

Image formats (filename extensions, if any, follow):
 DE gif    gif

Codecs:
 D V    4xm
 D V D  8bps
 DEA    aac
 D V D  aasc
 DEA    ac3
 DEA    adpcm_4xm
 DEA    adpcm_adx
 DEA    adpcm_ct
 DEA    adpcm_ea
 DEA    adpcm_ima_dk3
 DEA    adpcm_ima_dk4
 DEA    adpcm_ima_qt
 DEA    adpcm_ima_smjpeg
 DEA    adpcm_ima_wav
 DEA    adpcm_ima_ws
 DEA    adpcm_ms
 DEA    adpcm_sbpro_2
 DEA    adpcm_sbpro_3
 DEA    adpcm_sbpro_4
 DEA    adpcm_swf
 DEA    adpcm_xa
 DEA    adpcm_yamaha
 D A    alac
 DEA    amr_nb
 DEA    amr_wb
 DEV D  asv1
 DEV D  asv2
 D V D  avs
 D V    bmp
 D V D  camstudio
 D V D  camtasia
 D V D  cinepak
 D V D  cljr
 D A    cook
 D V D  cyuv
 DES    dvbsub
 DES    dvdsub
 DEV D  dvvideo
 DEV D  ffv1
 DEVSD  ffvhuff
 D A    flac
 D V D  flic
 DEVSD  flv
 D V D  fraps
 DEA    g726
 DEV D  h261
 DEVSDT h263
 D VSD  h263i
  EV    h263p
 DEV DT h264
 DEVSD  huffyuv
 D V D  idcinvideo
 D V D  indeo2
 D V    indeo3
 D A    interplay_dpcm
 D V D  interplayvideo
  EV    jpegls
 D V    kmvc
  EV    ljpeg
 D V D  loco
 D A    mace3
 D A    mace6
 D V D  mdec
 DEV D  mjpeg
 D V D  mjpegb
 D V D  mmvideo
 DEA    mp2
 DEA    mp3
 D A    mp3adu
 D A    mp3on4
 DEVSDT mpeg1video
 DEVSDT mpeg2video
 DEVSDT mpeg4
 D A    mpeg4aac
 D VSDT mpegvideo
 DEVSD  msmpeg4
 DEVSD  msmpeg4v1
 DEVSD  msmpeg4v2
 D V D  msrle
 D V D  msvideo1
 D V D  mszh
 D V D  nuv
 DEV    pam
 DEV    pbm
 DEA    pcm_alaw
 DEA    pcm_mulaw
 DEA    pcm_s16be
 DEA    pcm_s16le
 DEA    pcm_s24be
 DEA    pcm_s24daud
 DEA    pcm_s24le
 DEA    pcm_s32be
 DEA    pcm_s32le
 DEA    pcm_s8
 DEA    pcm_u16be
 DEA    pcm_u16le
 DEA    pcm_u24be
 DEA    pcm_u24le
 DEA    pcm_u32be
 DEA    pcm_u32le
 DEA    pcm_u8
 DEV    pgm
 DEV    pgmyuv
 DEV    png
 DEV    ppm
 D A    qdm2
 D V D  qdraw
 D V D  qpeg
 D V D  qtrle
 DEV    rawvideo
 D A    real_144
 D A    real_288
 D A    roq_dpcm
 D V D  roqvideo
 D V D  rpza
 DEV D  rv10
 DEV D  rv20
 D A    shorten
 D A    smackaud
 D V    smackvid
 D V D  smc
 DEV    snow
 D A    sol_dpcm
 DEA    sonic
  EA    sonicls
 D V D  sp5x
 DEV D  svq1
 D VSD  svq3
 D V    theora
 D V D  truemotion1
 D V D  truemotion2
 D A    truespeech
 D A    tta
 D V D  ultimotion
 D V    vc9
 D V D  vcr1
 D A    vmdaudio
 D V D  vmdvideo
 D A    vorbis
 D V    vp3
 D V D  vqavideo
 D A    wmav1
 D A    wmav2
 DEVSD  wmv1
 DEVSD  wmv2
 D V D  wnv1
 D A    ws_snd1
 D A    xan_dpcm
 D V D  xan_wc3
 D V D  xl
  EV    xvid
 DEV D  zlib
 D V    zmbv

Supported file protocols:
 file: pipe: udp: rtp: tcp: http:
Frame size, frame rate abbreviations:
 ntsc pal qntsc qpal sntsc spal film ntsc-film sqcif qcif cif 4cif
Motion estimation methods:
 zero(fastest) full(slowest) log phods epzs(default) x1 hex umh iter

Note, the names of encoders and decoders dont always match, so there are
several cases where the above table shows encoder only or decoder only entries
even though both encoding and decoding are supported for example, the h263
decoder corresponds to the h263 and h263p encoders, for file formats its even
worse

What is wrong in my code? Thanks in advance

解决方案

ffmpeg is complaining about there being a missing %d in the filename because you've asked it to convert multiple frames.

This post suggests this would be a better way of using ffmpeg to extract single frames

ffmpeg -i n.wmv -ss 00:00:20 -t 00:00:1 -s 320×240 -r 1 -f singlejpeg myframe.jpg

[edit]

After a bit more research, here is a command line which works outputing single png frames

ffmpeg -i test.avi -vcodec png -ss 10 -vframes 1 -an -f rawvideo test.png

Tested on my ubuntu 12.04 laptop

这篇关于在 Python 中提取视频帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆