2012-05-20 20 views
13

Video kareleri çıkarmak ve bunları resim olarak kaydetmek istiyorum.Python'da Resim Çerçevelerini Çıkarma

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)) 

Ama bu hata var:

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' 

Düzenleme: ffmpeg

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 

benim kodunda yanlış olan nedir -formats?

+0

http : //opencv.willowgarage.com/documentation/python/highgui_reading_and_writing_images_ and_video.html? highlight = frame # RetrieveFrame –

+1

Neden "subprocess.call()" yerine os.system() 'i kullanıyorsunuz? – ThiefMaster

+0

Hangi formatları kullanabileceğinizi görmek için 'ffmpeg -formats' komutunu çalıştırın – tuergeist

cevap

20

ffmpeg dosyası, dosyada bir çok %d eksik olduğundan şikayet ettiğinden, birden fazla çerçeveyi dönüştürmesini istediniz.

This post bu biraz more research sonra tek kare

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

[düzenlemek]

ayıklamak için ffmpeg kullanarak daha iyi bir yol olacağını düşündürmektedir, burada tek png çıkış olanağı çalışan bir komut satırı olduğunu çerçeveler

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

Ubuntu 12.04 dizüstü bilgisayarımda test edildi

+0

+1 ancak bu yalnızca bir çözümdür. png dosyalarına soru işareti – tuergeist

+0

'os.system ("ffmpeg -i test.avi -r 0.08 -f image2 -s 128x96% 4d.png")' – TheNone

+0

ile çözdüm. Linkler bozuk. –

1

Ffmpeg'niz png Dosya Biçimini desteklemiyor. Bunun yerine jpg veya gif kullanmalısınız. Ayrıca bu post'u izleyin (ilk önce 'dün' yazan).

8

Kolay şekilde Açık CV'yi kullanın.

import cv2 

vc = cv2.VideoCapture('Test.mp4') 
c=1 

if vc.isOpened(): 
    rval , frame = vc.read() 
else: 
    rval = False 

while rval: 
    rval, frame = vc.read() 
    cv2.imwrite(str(c) + '.jpg',frame) 
    c = c + 1 
    cv2.waitKey(1) 
vc.release() 
+4

Bu benim için çalışmıyor; Hiçbir şey çıkarmaz, ancak herhangi bir hata bildirmez. – GShocked

+0

@GShocked: Ubuntu'da deniyor musunuz? Bu Ubuntu ile çalışmıyor. moviepy deneyin – Megha

+0

@Megha Windows kullanıyordum, ama buna artık ihtiyacım yok. Bu soruyu 5 yıl önce sorduğuma inanamıyorum – GShocked

4

ffmpeg piton modülleri mevcuttur vardır

ffmpeg: https://code.google.com/p/pyffmpeg/

pyAV: Eğer herhangi bir görüntü-video manipülasyon için OpenCV kütüphanesi deneyebilirsiniz https://github.com/mikeboers/PyAV

import av 

container = av.open('/path/to/video.mp4') 

for packet in container.demux(): 
    for frame in packet.decode(): 
     if frame.type == 'video': 
      frame.to_image().save('/path/to/frame-%04d.jpg' % frame.index) 
0
import numpy as np 
import cv2 


capture = cv2.VideoCapture(0) 
size = (int(capture.get(3)),int(capture.get(4))) 
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
video = cv2.VideoWriter('output.avi',fourcc,30,size) 
print capture.isOpened() 
num=0 

while True: 
    ret, img = capture.read() 
    video.write(img) 
    cv2.imshow('video',img) 
    cv2.imwrite("image" + str(num) + ".jpg",img) 
    num = num + 1 
    key= cv2.waitKey(1) 
    if key == ord('q') 
     num=0 
     break 

video.release() 
capture.release() 
cv2.destroyAllWindows()