Animez plusieurs images fixes avec Python

Aperçu

Présentation de la création d'une vidéo de type diaporama en connectant des "photos prises tous les jours au même endroit". Utilisez la bibliothèque Python MoviePy.

Environnement de vérification de fonctionnement

Préparation préalable

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

Toute la source

create_slideshow.py


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

import glob
from moviepy.editor import *

if __name__ == '__main__':

    #L'extension sous le répertoire d'entrée est.Obtenez une liste des noms de fichiers jpg à la fois
    file_list = glob.glob(r'input/*.jpg')
    #Trier la liste des noms de fichiers par ordre croissant
    file_list.sort()

    #Traitement pour stocker les informations d'image fixe qui sont à la base de la création d'un diaporama
    clips = [] 
    for m in file_list:
        clip = ImageClip(m).set_duration('00:00:00.50')
        clip = clip.resize(newsize=(640,480))
        clips.append(clip)

    #Processus pour créer une image animée d'un diaporama
    concat_clip = concatenate_videoclips(clips, method="compose")
    concat_clip.write_videofile(r"output.mp4", 
                                fps=24,
                                write_logfile=True,
                                )

Commentaire

Traitement pour stocker les informations d'image fixe qui sont à la base de la création d'un diaporama

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

Processus pour créer une image animée d'un diaporama

    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

Animez plusieurs images fixes avec Python
Publiez plusieurs images Twitter avec python
Images en bordure avec python Partie 1
Animer plusieurs graphiques avec matplotlib
Reconnaissance des nombres dans les images avec Python
Charger une image gif avec Python + OpenCV
Intégration multiple avec Python et Sympy
[Python] Création de plusieurs fenêtres avec Tkinter
Travailler avec des images DICOM en Python
Amplifiez les images pour l'apprentissage automatique avec Python
Capturer des images avec Pupil, python et OpenCV
Traiter plusieurs listes avec for en Python
[Python] Lire des images avec OpenCV (pour les débutants)
Question: l'intégration multiple par python ne fonctionne pas
Ajouter du bruit gaussien aux images avec python2.7
Importer et exporter des images GeoTiff avec Python
Gérez plusieurs versions de Python avec des alternatives de mise à jour (Ubuntu)
Lire des caractères dans des images avec Python OCR
Télécharger des images sur Google Drive avec Python
Statistiques avec python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Faire une animation avec matplotlib
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Générer une image monochrome avec python | Icône Kaggle
Impossible de télécharger plusieurs images à partir du formulaire avec FastAPI
[Python] Comment dessiner plusieurs graphiques avec Matplotlib
Gérez l'environnement de plusieurs versions de Python avec Pythonz, virtualenv
Utiliser plusieurs versions de l'environnement python avec pyenv
Développé et vérifié avec plusieurs versions de python avec direnv
Télécharger en masse des images à partir d'une URL spécifique avec python
[Python] Traitement de plusieurs erreurs d'appel dans ray.init
Gérez plusieurs gestionnaires de contexte avec Python contextlib.
Convertissez plusieurs fichiers proto à la fois avec python
[Python] Mention à plusieurs personnes avec l'API de Slack
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Sélection multiple avec Jupyter
Grattage en Python (préparation)
Collez automatiquement des images dans des matériaux Powerpo avec python + α
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
"Orienté objet" appris avec python
Télécharger en masse des images à partir d'une URL de site spécifique avec python
Exécutez Python avec VBA