python把视频取帧,在Python中提取视频帧

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值