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.
$ pip install moviepy
[Référence] Un site qui décrit comment installer MoviePy
Si vous voulez juste faire ce que vous voulez faire cette fois, seule la commande pip install moviepy
devrait convenir
Préparez une image fixe pour faire un diaporama
Sous le répertoire ʻinput``, placez les images fixes (extensions
.png``,
`.jpg``, etc.) en les indexant dans l'ordre dans lequel vous voulez les connecter dans le diaporama.
Ce qui suit est un exemple, mais si vous triez par nom de fichier dans la source Python dans l'ordre croissant et que vous les organisez dans l'ordre dans lequel vous souhaitez vous connecter dans le diaporama, vous n'avez pas à suivre les règles de dénomination suivantes.
input
├── IMG_0000.jpg
├── IMG_0001.jpg
├── IMG_0002.jpg
├── ...
python create_slideshow.py
, vous obtiendrez une image animée `ʻoutput.mp4`` avec des images fixes connectées à 0,5 seconde d'intervalle.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,
)
clips = []
for m in file_list:
clip = ImageClip(m).set_duration('00:00:00.50')
clip = clip.resize(newsize=(640,480))
clips.append(clip)
ImageClip(m).set_duration('00:00:00.50')
clip.resize(newsize=(640,480))
concat_clip = concatenate_videoclips(clips, method="compose")
concat_clip.write_videofile(r"output.mp4",
fps=24,
write_logfile=True,
)
méthode '' peut sélectionner
chaîne '' ou composer ''. En regardant le document, il semble préférable d'utiliser
composer '' si la taille de l'image en mouvement avant la connexion est différente. Dans ce cas, la taille de l'image en mouvement est réglée à l'avance sur 640x480 et c'est la même taille, il a donc été confirmé que cela fonctionne même si method = "chain"
. write_logfile = True
, le journal qui crée le fichier de sortie sera sorti avec le nom ```output.mp4.log`` comme indiqué ci-dessous, et vous pouvez voir que ffmpeg s'exécute dans les coulisses.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