Je viens de régénérer le même trajet depuis OpenRunner. L'entête est alors celle-ci (le reste est identique mais avec moins de décimales) au lieu de ce que j'ai listé dans le message précédent en bas de page.
Merci pour ton action rapide. Juste un problème : je suis complètement HS malgré un test négatif ce matin Mal partout, laryngite, bronches en feu, mal de gorge, toux agressive et fontaine nasale ... Je fais au mieux et je te dis ... Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Ta vidéo n'est pas très grande. Du coup, je pense que les widgets sont affichés en dehors de la vidéo... manque encore quelques contrôle et ajustement.
Hum, je ne comprends pas tout. Pourquoi y a-t-il 2 trkpt de coordonnées différentes et avec un format différent dans ton GPX (résolution et date heure) :
Et par ailleurs, la trace d'erreur semble assez claire, il n'associe pas de coordonnées GPS à l'heure vidéo
Code:
Time synchronization... ERROR: No GPS data stream found
Qu'en penses-tu ? Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Mar 25 Jan 2022, 09:32
Le GPX, c'est les formats qui sont actuellement acceptés. Les 2 points sont issus de 2 GPX différents.
ERROR: No GPS data stream found
Veut simplement dire qu'il ne trouve pas le stream GPS dans ton MP4 et qu'il ne peut donc synchroniser automatiquement les données.
Download map from OpenStreetMap I... Download tile 4 / 4 [##################################################] DONE Build map... iptc xml add_attrib unknown type stRef:instanceID unknown iptc xml add_attrib unknown type stRef:documentID unknown /build/openimageio-l3oG0b/openimageio-2.1.12.0~dfsg0/src/include/OpenImageIO/imagebuf.h:1324: pos_xincr: Assertion 'm_exists && m_valid' failed. Abandon (core dumped)
Ici je peux lire qu'il telecharge avec succès les tuiles de la carte. Ce qui veut dire qu'il a réussi à lire ton gpx.
Et l'erreur qui se produit dans le rendu.
D'ailleurs au lieu d'utiliser la commande "vidéo", utilises la commande "map" avec - o "my-map.png" en paramètre. Ensuite, tu pourras tester avec la commande "track".
J'ai pu faire quelques essais mais sans trop réfléchir ... Voici les résultats :
- l'erreur "core dump" est bien due à la taille de la vidéo, il manque une vérification de cohérence au lancement (ou j'aurais dû vérifier les coordonnées des widgets au lieu de lancer bêtement) => j'ai régénéré ma vidéo en 1920x1080 et je l'ai datée à nouveau. J'ai relancé la même commande avec le même layout et cette fois ça travaille ... lennnntemmmmment ! Il faut environ 1 seconde par frame et c'est bavard (j'ai tenté ensuite le -q mais ça n'enlève pas tout). Je n'ai pourtant pas une brouette. Estimant qu'il faudrait environ 18h pour générer une vidéo de 1h30, j'ai fait un control-c et j'ai été content de voir qu'il terminait proprement la vidéo, Bravo.
J'ai alors pu contempler une chouette carte avec le début de la trajectoire en bleu et une icone représentant le vélo au point de départ Le programme a donc bien exploité mon GPX, chargé les tuiles utiles et dessiné ce qu'il faut, super. La date et l'heure sont affichées dynamiquement, mais : - l'altitude ne varie pas - la vitesse reste à 0 - la pente reste à 0 - la position de l'icone vélo n'évolue pas
J'en conclue que s'il lit bien le GPX et s'en sert correctement pour afficher la carte, il reste bloqué sur la position de départ pour les autres calculs J'en suis là ...
Je n'ai pas compris ce que tu veux dire avec "D'ailleurs au lieu d'utiliser la commande "vidéo", utilises la commande "map" avec - o "my-map.png" en paramètre. Ensuite, tu pourras tester avec la commande "track"." J'utilise la commande du .md de github en mettant les noms qui vont bien : ./gpx2video -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml -o output.mp4 --map-source=1 --map-zoom=11 --map-factor 2.0
Je ne comprends pas la partie basse listée par ./gpx2video -h
Bonne soirée Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Jeu 27 Jan 2022, 22:22
Intéressant, alors plusieurs choses.
Pour la liste des commandes possibles, voici ce que tu peux faire :
source : c'est l'ID pour le choix de la carte (faire "./gpx2video --map-list") zoom : c'est le niveau de zoom des cartes téléchargées factor : c'est le zoom au moment du rendu (donc ici on zoom x2 sur la carte téléchargée)
- Pour tester la synchro :
Code:
./gpx2video -m GH020340.MP4 -g ACTIVITY.gpx sync
qui ne devrait rien donner chez toi, puisque pas de "piste" GPS dans le fichier MP4.
- Pour générer la vidéo (commande par défaut) :
Code:
./gpx2video -m GH020340.MP4 -g ACTIVITY.gpx -l layout.xml -o output.mp4 video
"video" est optionnel, c'est la commande par défaut. Les options --map-source, --map-zoom, --map-factor, sont pour les commandes map et track. Dans le cas du rendu de la vidéo, je mets tous les paramètres dans le fichier layout.xml
Ensuite, en ce qui concerne :
- La date et l'heure sont affichées dynamiquement => Oui, on connait le début de la vidéo (date & heure) à partir du champ "creation_time", du coup on calcule l'heure à partir de cette date et de la position dans la vidéo
- l'altitude ne varie pas - la vitesse reste à 0 - la pente reste à 0 - la position de l'icone vélo n'évolue pas => Puisqu'il a pu faire la carte avec la trace, il arrive à lire les données longitude & latitude. Donc, l'erreur est sur la date. Il n'arrive pas à se positionner dans le fichier GPX.
Il faut que le champ "creation_time" (avec le format : "2021-05-30T10:20:50.000000Z") soit en heure locale (heure de ton système). (La commande linux "date", doit t'afficher l'heure locale de ton système.) Et que cette heure soit dans la plage de ton fichier GPX (attention, dans le GPX les heures sont en heure UTC) Exemple heure UTC dans le GPX qui correspondrait au 1er point : 2021:05:30 08:20:50.000 (ici c'est un monde parfait où on est à la même heure à la milliseconde près, dans les faits, j'ai quelques secondes d'écart).
La commande : "date" renvoie l'heure locale La commande : "date -u" renvoie l'heure UTC (ça te permet de voir l'écart entre les 2 - attention, l'écart dépend si on est en heure d'été ou d'hiver)
Enfin pour les perfs... oui le "Ctrl-C" permet de stopper proprement afin de pouvoir lire la vidéo et de tester le rendu. (il y a l'option -d également qui permet de générer un rendu sur une durée max)
Et oui, ça manque encore d'optimisations... c'est pour plus tard Je travaillerai avant sur les options de "trim" (couper la vidéo au début et à la fin) lors du rendu. Ainsi que sur le résolution de sortie.
Merci pour tes réponses, en particulier sur le détail des commandes.
Je testerai demain si possible ces histoires de dates, mais il y a un truc qui me chiffonne : le champ creation_time se termine par 000Z Or l'heure Z (Zulu) est l'heure UTC, pas l'heure locale
Code:
pulsar33@Minerve:~$ date jeudi 27 janvier 2022, 23:52:13 (UTC+0100) pulsar33@Minerve:~$ date -u jeudi 27 janvier 2022, 22:52:29 (UTC+0000)
Bonne nuit Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Ven 28 Jan 2022, 08:48
Oui, tu as raison, la date est écrite au format "UTC" mais avec une valeur locale
Mais c'est comme cela sur la GoPro.
D'ailleurs avec ta caméra, tu pourrais tester de créer une vidéo et de noter l'heure à laquelle tu la crées, puis de lire la valeur de ce champ.
En fait sur la GoPro, il n'y a aucun endroit où tu peux régler le fuseau horaire.
gpx2video suppose d'ailleurs que la GoPro et l'ordinateur sur lequel il s'exécute sont dans le même fuseau horaire.
Comme indiqué précédemment, aucune de mes caméras n'a d'heure intégrée. Il faut donc que je l'ajoute avec le script ci-dessous et je peux mettre ce que je veux pour m'adapter au GPX :
Réponse rapide en attendant plus de détails : J'ai pu générer une vidéo avec les variables qui bougent en mettant +1h dans le creation_time mais ... - les widgets et la position ne correspondent pas à l'image alors que la position de départ est bonne. La vitesse n'est jamais nulle et la position varie trop vite. - les deux temps affichés dans la console se désynchronisent au fur et à mesure, l'un variant par frame, l'autre par saut et pas avec un rythme cohérent
J'ai tenté de régénérer ma vidéo en 60 FPS et en 30 FPS, ça change des choses mais ce n'est pas mieux Ma vidéo "d'origine" (qui avait déjà été post traitée) est en 576p 25Hz
Bonne soirée et @+ si je peux Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Ven 28 Jan 2022, 20:34
Si j'ai bien compris... tout est au bon sur les toutes premières images et ensuite, tout se désynchronise !
Effectivement je n'ai testé qu'avec des vidéos en 50 FPS.
Je testerai avec d'autres valeurs de FPS et tenterai de corriger cela ! Mais si tu peux convertir en 50fps, ça ira plus vite
En passant : La position 3D initiale semble bonne, ce qui est calculé par différence est sans doute faux, en particulier la vitesse à 20km/h alors que je suis à l'arrêt.
Je viens de regarder la description de ta vidéo sur Github
Bref, j'ai déjà régénéré en 60FPS et en 30FPS, le faire en 50FPS ne me posera pas plus de problème. Tant qu'on ne tombe pas sur des américanismes du style 29.97FPS Quant au débit affiché, il laisse rêveur ...
Bonne soirée Pulsar33
PS : pour info, le début et la fin de la trace sur 1 minute
Code:
[libx264 @ 0x565189eb4180] 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=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=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=cbr mbtree=1 bitrate=32000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=32000 vbv_bufsize=2000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to 'output1.mp4': Stream #0:0: Video: h264, yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 32000 kb/s, 25 tbn Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s Parsing 'layout4.xml' layout file Load widget 'grade' Initialize grade widget Load widget 'speed' Initialize speed widget Load widget 'elevation' Initialize elevation widget Load widget 'time' Initialize time widget Load map widget Initialize map widget Cache initialiization... Time synchronization... ERROR: No GPS data stream found Download map from OpenStreetMap I... Download tile 4 / 4 [##################################################] DONE Build map... iptc xml add_attrib unknown type stRef:instanceID unknown iptc xml add_attrib unknown type stRef:documentID unknown iptc xml add_attrib unknown type GIMP:API unknown iptc xml add_attrib unknown type GIMP:Platform unknown iptc xml add_attrib unknown type GIMP:TimeStamp unknown iptc xml add_attrib unknown type GIMP:Version unknown iptc xml add_attrib unknown type stEvt:action unknown iptc xml add_attrib unknown type stEvt:changed unknown iptc xml add_attrib unknown type stEvt:instanceID unknown iptc xml add_attrib unknown type stEvt:softwareAgent unknown iptc xml add_attrib unknown type stEvt:when unknown FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2022-01-24 12:32:10 Time: 2022-01-24 12:32:10. Distance: 0.000 km in 0.000 seconds, current speed is 0.000 (valid: true) iptc xml add_attrib unknown type stRef:instanceID unknown iptc xml add_attrib unknown type stRef:documentID unknown iptc xml add_attrib unknown type GIMP:API unknown iptc xml add_attrib unknown type GIMP:Platform unknown iptc xml add_attrib unknown type GIMP:TimeStamp unknown iptc xml add_attrib unknown type GIMP:Version unknown iptc xml add_attrib unknown type stEvt:action unknown iptc xml add_attrib unknown type stEvt:changed unknown iptc xml add_attrib unknown type stEvt:instanceID unknown iptc xml add_attrib unknown type stEvt:softwareAgent unknown iptc xml add_attrib unknown type stEvt:when unknown
[...]
FRAME: 1458 - PTS: 746496 - TIMESTAMP: 58320 ms - TIME: 2022-01-24 12:33:08 Time: 2022-01-24 12:33:13. Distance: 0.393 km in 63.000 seconds, current speed is 20.176 (valid: true) iptc xml add_attrib unknown type stRef:instanceID unknown iptc xml add_attrib unknown type stRef:documentID unknown iptc xml add_attrib unknown type GIMP:API unknown iptc xml add_attrib unknown type GIMP:Platform unknown iptc xml add_attrib unknown type GIMP:TimeStamp unknown iptc xml add_attrib unknown type GIMP:Version unknown iptc xml add_attrib unknown type stEvt:action unknown iptc xml add_attrib unknown type stEvt:changed unknown iptc xml add_attrib unknown type stEvt:instanceID unknown iptc xml add_attrib unknown type stEvt:softwareAgent unknown iptc xml add_attrib unknown type stEvt:when unknown
Régen point 1 <time>2022-01-24T11:32:10Z</time>
creation_time : 2022-01-24T12:32:10.000000Z
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Ven 28 Jan 2022, 21:56
Concernant le calcul de la vitesse et la distance parcourue... ça ne dépend pas de la vidéo.
Je lis le GPX point par point. Entre chaque point, on calcule distance. Et comme on a l'heure de chaque point, on a facilement la vitesse. (il manque un algo pour filtrer/lisser les valeurs).
Pour la gestion du temps dans la vidéo... je pars de la valeur PTS que je convertis en TIMESTAMP (qui doit correspondre au temps écoulé dans la vidéo). En ajoutant, l'heure de début de la vidéo... on a l'heure à un instant donné dans le flux vidéo. Reste à chercher le point WPT dans le GPX correspondant.
Si je calcule mal cette position dans la vidéo... je ne prendrai par conséquent pas le bon point dans le GPX.
Pour l'instant ça avance en escalier... puisqu'on a un point dans le GPX toutes X millisecondes (voir plusieurs secondes en fonction des GPS).
En résumé, je ne pense pas qu'il y ait d'erreur dans les calculs de vitesse / vitesse moyenne (si ce n'est les valeurs incohérentes à cause de l’échantillonnage), mais qu'il ne lit pas les bonnes données dans le GPS.
La synchronisation est en effet le point délicat !
Dans la vidéo :
Il y a un problème dans la synchronisation... Les flux sont bien lus à la bonne vitesse. Mais j'ai environ 10 secondes de retard sur le flux GPS. Si tu regardes à "2min52" dans la vidéo... j'arrive à un STOP et je ne suis pas encore à 0km/h !
Ici le problème, que je ne comprends d'ailleurs toujours pas, est lié au mode "Quick Capture" de la GoPro. Ce mode permet de lancer la capture et enregistrement alors que la GoPro est éteinte. Par contre, si j'allume la GoPro ; puis que je lance l'enregistrement tout se passe bien.
Quant aux traces :
Code:
iptc xml add_attrib unknown type stRef:instanceID unknown iptc xml add_attrib unknown type stRef:documentID unknown iptc xml add_attrib unknown type GIMP:API unknown iptc xml add_attrib unknown type GIMP:Platform unknown
il y a des choses dans ton GPX qui ne sont pas comprises... Le GPX a le format :
Les traces permettent de comparer dans les 2 cas :
Code:
# Video 50 fps: FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2021-05-30 10:20:00 Time: 2021-05-30 10:20:00. Distance: 0.000 km in 0.000 seconds, current speed is 0.000 (valid: true)
# Video 30 fps: FRAME: 0 - PTS: 0 - TIMESTAMP: 0 ms - TIME: 2021-05-30 10:20:00 Time: 2021-05-30 10:20:00. Distance: 0.000 km in 0.000 seconds, current speed is 0.000 (valid: true)
Donc on part bien du même endroit... FRAME : n° de l'image. (50 fps pour une vidéo de 10 secondes => 500 images) TIMESTAMP : heure de l'image (depuis le début de la vidéo) TIME : heure de l'image depuis la date de prise de vue (heure locale) sur la 2ème ligne, ce qui sera affiché sur les widgets
Au bout de 10 secondes de vidéo :
Code:
# Video 50 fps: FRAME: 500 - PTS: 900000 - TIMESTAMP: 10000 ms - TIME: 2021-05-30 10:20:10 Time: 2021-05-30 10:20:10. Distance: 3.949 km in 10.000 seconds, current speed is 46.183 (valid: true)
# Video 30 fps: FRAME: 300 - PTS: 153600 - TIMESTAMP: 10000 ms - TIME: 2021-05-30 10:20:10 Time: 2021-05-30 10:20:10. Distance: 3.949 km in 10.000 seconds, current speed is 46.183 (valid: true)
J'aime autant que ce ne soit pas un problème de FPS ! Bon, je vais donc essayer de transcoder mon GPX dans ton format, c'est à dire celui-ci si j'ai bien compris:
Dans le mien, le champ number n'existe pas. A la place j'ai un champ name Ensuite, mes lat/lon ont le même nombre de décimale, mon altitude est en mètres entiers, mon temps est à la seconde sans décimales avant le Z Je ne vois pas d'autre différence, hormis les différentes valeurs incluses entre gpx et /gpx
Question : le retour ligne a-t-il une importance ? Est-ce compatible de LF seul et de CR LF , ou bien seulement l'un ou seulement l'autre ?
Je regarde ça demain Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Sam 29 Jan 2022, 08:38
Sinon, est-ce que c'est possible que tu m'envoies (partages) ta vidéo avec le GPX ? en la mettant sur un cloud (google drive ou autre) ?
Pour la vidéo, tu peux mettre une petite résolution, ça ne change pas le rendu ; mais ça sera moins lourd.
Pour le GPX, le format que j'ai mis est celui qui est actuellement lu avec les variantes sur le champ date.
Le nombre de décimal sur lat / lon / ele n'a pas d'influence. Et les autres champs ne sont pas utilisés (pour le moment).
Avant d'en arriver à cette extrémité, je crois que j'ai trouvé une piste sérieuse. Après les premiers essais infructueux, j'ai privilégié un version nouvellement exportée par OpenRunner de mon trajet parce que son format était plus proche du tien. Voulant extraire une partie de la vidéo et du GPX pour t'envoyer quelque chose de plus maniable, je viens de voir que le GPX en question n'est qu'une version filtrée (efficacement d'ailleurs) de la trajectoire. Le GPX ne contient que 1200 lignes au lieu de plus de 34000. Ceci explique donc les sauts que je constatais dans la console et sans doute aussi que ça ne matche pas.
Si ceci se confirme, tu pourrais mettre une évolution dans ta TODO list : en cas d'absence de point correspondant à la frame dans le GPX, interpoler linéairement en fonction du temps entre les deux points existants et encadrant le temps cherché.
Maintenant que je sais qu'il faut veiller aux tailles / positions des widgets par rapport à la vidéo et offseter l'heure, je vais refaire un essai que j'espère concluant avec mon GPX initial. Je te tiens qu courant.
Bonne journée Pulsar33
progweb Posteur d'or
Messages : 576 Localisation : France VPH : ICE VTX Black Date d'inscription : 25/04/2020
Sujet: Re: GoPro & Linux Sam 29 Jan 2022, 09:48
Tout à fait, comme dit dans un post précédent.
A partir de l'heure "calculée" dans la vidéo (heure que tu peux lire sur la ligne FRAME) je cherche le point "le plus proche" dans le GPX.
Si les points sont trop espacés, c'est moche et ça saute.
Une trace Garmin est "intelligente" : beaucoup de points quand ça va vite et des points espacés dans le temps à vitesse lente ou à l'arrêt.
La GoPro quant à elle crée un point chaque seconde.
Comme indiqué dans ma doc, dans les améliorations prévues, je vais calculer les points intermédiaires par interpolation. Mais ce n'est pas encore fait.