Animieren Sie mehrere Standbilder mit Python

Überblick

Einführung in die Erstellung eines Diashow-ähnlichen Videos durch Verbinden von "Fotos, die jeden Tag vom selben Ort aufgenommen wurden". Verwenden Sie die Python-Bibliothek MoviePy.

Betriebsüberprüfungsumgebung

Vorbereitungen

$ pip install moviepy
input
├── IMG_0000.jpg
├── IMG_0001.jpg
├── IMG_0002.jpg
├── ...

Ganze Quelle

create_slideshow.py


#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-

import glob
from moviepy.editor import *

if __name__ == '__main__':

    #Die Erweiterung unter dem Eingabeverzeichnis lautet.Holen Sie sich eine Liste der JPG-Dateinamen auf einmal
    file_list = glob.glob(r'input/*.jpg')
    #Sortieren Sie die Dateinamenliste in aufsteigender Reihenfolge
    file_list.sort()

    #Verarbeitung zum Speichern von Standbildinformationen, die die Grundlage für die Erstellung einer Diashow bilden
    clips = [] 
    for m in file_list:
        clip = ImageClip(m).set_duration('00:00:00.50')
        clip = clip.resize(newsize=(640,480))
        clips.append(clip)

    #Prozess zum Erstellen eines bewegten Bildes einer Diashow
    concat_clip = concatenate_videoclips(clips, method="compose")
    concat_clip.write_videofile(r"output.mp4", 
                                fps=24,
                                write_logfile=True,
                                )

Kommentar

Verarbeitung zum Speichern von Standbildinformationen, die die Grundlage für die Erstellung einer Diashow bilden

    clips = [] 
    for m in file_list:
        clip = ImageClip(m).set_duration('00:00:00.50')
        clip = clip.resize(newsize=(640,480))
        clips.append(clip)

Prozess zum Erstellen eines bewegten Bildes einer Diashow

    concat_clip = concatenate_videoclips(clips, method="compose")
    concat_clip.write_videofile(r"output.mp4", 
                                fps=24,
                                write_logfile=True,
                                )

text:output.mp4.log


ffmpeg version 4.2.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, rawvideo, from 'pipe:':
  Duration: N/A, start: 0.000000, bitrate: 176947 kb/s
    Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 640x480, 176947 kb/s, 24 tbr, 24 tbn, 24 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
[libx264 @ 0x6856ac0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x6856ac0] profile High, level 3.0, 4:2:0, 8-bit
[libx264 @ 0x6856ac0] 264 - core 159 r2991 1771b55 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 640x480, q=-1--1, 24 fps, 12288 tbn, 24 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=   85 fps=0.0 q=28.0 size=       0kB time=00:00:01.33 bitrate=   0.3kbits/s speed=2.58x    
frame=  148 fps=145 q=28.0 size=     512kB time=00:00:03.95 bitrate=1059.7kbits/s speed=3.89x    
frame=  205 fps=130 q=28.0 size=     768kB time=00:00:06.33 bitrate= 993.4kbits/s speed=   4x
...

Recommended Posts

Animieren Sie mehrere Standbilder mit Python
Veröffentlichen Sie mehrere Twitter-Bilder mit Python
Angrenzende Bilder mit Python Teil 1
Animieren Sie mehrere Diagramme mit matplotlib
Zahlenerkennung in Bildern mit Python
Laden Sie das GIF-Bild mit Python + OpenCV
Mehrfachintegration mit Python und Sympy
[Python] Erstellen mehrerer Fenster mit Tkinter
Arbeiten mit DICOM-Bildern in Python
Verstärken Sie Bilder für maschinelles Lernen mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Verarbeiten Sie mehrere Listen mit for in Python
[Python] Bilder mit OpenCV lesen (für Anfänger)
Frage: Die Mehrfachintegration mit Python funktioniert nicht
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Importieren und Exportieren von GeoTiff-Bildern mit Python
Verwalten Sie mehrere Python-Versionen mit Update-Alternativen (Ubuntu)
Lesen von Zeichen in Bildern mit Python OCR
Laden Sie Bilder mit Python auf Google Drive hoch
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Erstellen Sie eine Animation mit matplotlib
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Generieren Sie ein Schwarzweißbild mit dem Symbol Python | Kaggle
Mit FastAPI können nicht mehrere Bilder aus dem Formular hochgeladen werden
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Verwalten Sie die Python-Umgebung mit mehreren Versionen mit Pythonz, virtualenv
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Entwickelt und verifiziert mit mehreren Python-Versionen mit direnv
Massen-Download-Bilder von einer bestimmten URL mit Python
[Python] Umgang mit mehreren Aufruffehlern in ray.init
Verwalten Sie mehrere Kontextmanager zusammen mit Python contextlib.ExitStack
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
[Python] Erwähnen Sie mit der Slack-API mehrere Personen
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Mehrfachauswahl mit Jupyter
Scraping in Python (Vorbereitung)
Fügen Sie Bilder mit Python + α automatisch in Powerpo-Materialien ein
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
"Objektorientiert" mit Python gelernt
Massen-Download-Bilder von einer bestimmten Site-URL mit Python
Führen Sie Python mit VBA aus