Scénario pour réaliser Timelapse sur un NAS

Ah top le chmod a fonctionné !

Oui j’ai bien noté le fonctionnement, pour le moment je fais des essais en ayant shunté la commande de compression/suppression donc je retrouve mes captures dans le répertoire créé et je peux les réutiliser à nouveau pour relancer le script. Ça marche bien.

Maintenant mon problème c’est que mon timelapse va se passer la nuit (avant et après minuit) donc il faut que je trouve un moyen de sélectionner les captures via un autre moyen que leur date :frowning:

Si tu es sur de faire tourner la « timlapsification » tous les jours, tu peux modifier la ligne
mv ${CHDATE}_*.jpg ${CHDATE}/ en mv Chantier_*.jpg ${CHDATE}/
En remplaçant « Chantier » par « Camera » dans ton cas, si je ne m’abuse.

Le timelaps et l’archive seront datés du jour de fin du timelaps, mais le fonctionnement sera OK.

1 « J'aime »

Merci je vais tester ça.

Si c’est pas le cas il prendra toutes les captures présentes même si elles sont plus anciennes c’est ça ?

Yes, c’est bien ça :slight_smile:

Pour le fun, voici un exemple des timelaps de 2021 :
ezgif-6-f06dfe9489

2 « J'aime »

Canon!
Sais-tu si il y a moyen d’intégrer les sous-titres en dur dans la vidéo plutôt qu’un fichier .srt à part ?

Oui, c’est fait de base ici :

-vf subtitles=${CHDATE}.srt

Ah bizarre chez moi les sous-titres ne sont pas incrustés en dur, il faut le fichier .srt pour qu’ils apparaissent.

Tu génères bien le fichier Camera_2024-03-16.srt dans le répertoire /var/www/html/plugins/script/data/ ?

Pas de caractère bizarres etc ?
Tu peux coller ici le log ffmpeg_timelapse ?

Ah bah écoute en fait ça a marché à l’instant. Je te mets les logs ci-dessous pour ton info quand même…
Par contre pour répondre à ta question non le fichier .srt est généré dans le répertoire plugins/caméra/records/165 et pas dans le répertoire scripts/data. D’ailleurs il faudrait le supprimer à la fin.

0000|### BEGIN at 2024/03/16 14:48:55
0001|### Starting
0002|### Generating subs
0003|### Creating Timelapse at 2024/03/16 14:48:55
0004|Input #0, image2, from 'Camera_2024-03-16/*.jpg':
0005|Duration: 00:00:26.00, start: 0.000000, bitrate: N/A
0006|Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 1 fps, 1 tbr, 1 tbn, 1 tbc
0007|Stream mapping:
0008|Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
0009|[Parsed_subtitles_0 @ 0xaaaaf773bb00] Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 2.3.1 (COMPLEX)
0010|[Parsed_subtitles_0 @ 0xaaaaf773bb00] Using font provider fontconfig
0011|[swscaler @ 0xaaaaf77b5200] deprecated pixel format used, make sure you did set range correctly
0012|[Parsed_subtitles_0 @ 0xaaaaf773bb00] fontselect: (Arial, 400, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, 0, DejaVuSans
0013|[libx264 @ 0xaaaaf775f9a0] using cpu capabilities: ARMv8 NEON
0014|[libx264 @ 0xaaaaf775f9a0] profile High, level 3.1
0015|[libx264 @ 0xaaaaf775f9a0] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=9 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=1 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
0016|Output #0, mp4, to 'Camera_2024-03-16.mp4':
0017|Metadata:
0018|encoder         : Lavf58.20.100
0019|Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1024x768, q=-1--1, 1 fps, 16384 tbn, 1 tbc
0020|Metadata:
0021|encoder         : Lavc58.35.100 libx264
0022|Side data:
0023|cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
0024|frame=   23 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
frame=   26 fps=6.8 q=-1.0 Lsize=    2211kB time=00:00:23.00 bitrate= 787.4kbits/s speed=5.99x
0025|video:2210kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.052152%
0026|[libx264 @ 0xaaaaf775f9a0] frame I:1     Avg QP: 7.06  size:109088
0027|[libx264 @ 0xaaaaf775f9a0] frame P:7     Avg QP: 7.14  size: 98460
0028|[libx264 @ 0xaaaaf775f9a0] frame B:18    Avg QP: 8.14  size: 81312
0029|[libx264 @ 0xaaaaf775f9a0] consecutive B-frames:  7.7%  0.0%  0.0% 92.3%
0030|[libx264 @ 0xaaaaf775f9a0] mb I  I16..4:  3.7% 67.6% 28.7%
0031|[libx264 @ 0xaaaaf775f9a0] mb P  I16..4:  2.3% 43.0% 21.5%  P16..4:  9.1% 14.4%  9.7%  0.0%  0.0%    skip: 0.0%
0032|[libx264 @ 0xaaaaf775f9a0] mb B  I16..4:  1.1% 20.8% 14.1%  B16..8: 16.8% 22.8% 12.4%  direct:11.7%  skip: 0.3%  L0:41.1% L1:31.5% BI:27.5%
0033|[libx264 @ 0xaaaaf775f9a0] 8x8 transform intra:61.2% inter:52.1%
0034|[libx264 @ 0xaaaaf775f9a0] coded y,uvDC,uvAC intra: 93.7% 0.0% 0.0% inter: 93.2% 0.0% 0.0%
0035|[libx264 @ 0xaaaaf775f9a0] i16 v,h,dc,p: 31% 20% 14% 35%
0036|[libx264 @ 0xaaaaf775f9a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 21% 14%  4%  5%  5%  5% 11%  7%
0037|[libx264 @ 0xaaaaf775f9a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 20% 15%  5%  7%  5%  5%  8%  6%
0038|[libx264 @ 0xaaaaf775f9a0] i8c dc,h,v,p: 100%  0%  0%  0%
0039|[libx264 @ 0xaaaaf775f9a0] Weighted P-Frames: Y:0.0% UV:0.0%
0040|[libx264 @ 0xaaaaf775f9a0] ref P L0: 41.2% 10.1% 24.5% 24.2%
0041|[libx264 @ 0xaaaaf775f9a0] ref B L0: 66.6% 25.6%  7.8%
0042|[libx264 @ 0xaaaaf775f9a0] ref B L1: 83.8% 16.2%
0043|[libx264 @ 0xaaaaf775f9a0] kb/s:695.98
0044|### Tarring
0045|### DONE at 2024/03/16 14:48:59

Oui en effet :shushing_face:

Oui, je te propose de :

  • de remplacer : /var/www/html/plugins/script/data/mdate2srt.py ${CHDATE} > ${CHDATE}.srt
    par : /var/www/html/plugins/script/data/mdate2srt.py ${CHDATE} > ${CHDATE}\${CHDATE}.srt
  • de remplacer : -vf subtitles=${CHDATE}.srt
    par : -vf subtitles=${CHDATE}\${CHDATE}.srt
    dans la ligne nice -n 10 ffmpeg ...

Comme ça il sera directement dans le TGZ.

1 « J'aime »

Est-ce qu’il ne manque pas un espace entre le \ et le $ ? Car le fichier .srt généré s’appelle « 2024:03:16${CHDATE}.srt » et n’a pas été compressé/supprimé.
Mais étonnamment la vidéo s’est bien générée avec les sous-titres.

C’est un slash qui fallait mettre (/), pas un anti-slash (\)…
Je fais trop de Windows ces temps ci…

1 « J'aime »

Ça fonctionne ! Trop cool merci !
Il me reste à ajuster la vitesse comme je le souhaite (d’ailleurs ce se serait cool que le framerate du script .sh soit passé en argument comme fsp dans le script .py). Ou alors c’est un risque d’erreur au niveau synchro des subs ?

Le script n’a pas vraiment été conçu pour ajuster ce genre de paramètres. 25 images par seconde, ça permet de ne pas perdre de qualité et de ne pas complexifier les calculs dans le script.

Il a toujours été question de faire un post-traitement avec les vidéos de l’ensemble des jours pour arriver à une unique vidéo et de corriger la vitesse en post-prod si besoin.

J’ai passé seulement 5h sur le montage, ça il ne m’a fallu retraiter (couper, corriger la luminosité) que 160 mini-vidéos, car sur les 287 il y a eu pas mal de jours « sans activité », au lieu de devoir traiter manuellement de >10000 images.

Mais ton besoin est peut être différent ?

Ok merci pour ta réponse, je veux juste diminuer le fps pour diminuer la vitesse du timelapse, je ne pense pas que ça affectera la qualité. Je m’amuse avec la caméra dans la chambre de ma fille pour voir comment elle bouge pendant la nuit.

Ahhh sympa :slight_smile:

Alors tu dois juste pouvoir modifier -framerate 25 -framerate 10 par ex

Et ajuster les FPS dans le script pour les sous-titres :

Bad

Ok merci c’est bien ce que je pensais !