{"id":1113,"date":"2013-01-06T19:16:53","date_gmt":"2013-01-06T18:16:53","guid":{"rendered":"http:\/\/olivier.hoarau.org\/?p=1113"},"modified":"2013-01-06T19:19:54","modified_gmt":"2013-01-06T18:19:54","slug":"incrustation-information-gps-dans-video","status":"publish","type":"post","link":"https:\/\/olivier.hoarau.org\/?p=1113","title":{"rendered":"Incrustation information GPS dans vid\u00e9o"},"content":{"rendered":"<p style=\"text-align: justify;\">Puisque je sors en planche \u00e0 voile avec ma montre <a title=\"Garmin forerunner 205\" href=\"http:\/\/olivier.hoarau.org\/?p=604\">GPS garmin forerunner<\/a>, je cherchais une astuce pour pouvoir int\u00e9grer les informations de temps et de vitesse dans mes vid\u00e9os en incrustation. Je pense avoir trouv\u00e9 le moyen, m\u00eame si \u00e7a reste perfectible et oblige \u00e0 bien mettre \u00e0 l&rsquo;heure la <a title=\"cam\u00e9ra GoPro HD1\" href=\"http:\/\/olivier.hoarau.org\/?p=801\">cam\u00e9ra GoPro<\/a>.<\/p>\n<p style=\"text-align: justify;\">Tout d&rsquo;abord il faut exporter la trace GPS au format gpx, <a title=\"Turtlesport\" href=\"http:\/\/www.funix.org\/fr\/linux\/index.php?ref=garmin#Turtlesport\">turtlesport<\/a> le permet. Par d\u00e9faut il n&rsquo;y a que les positions et l&rsquo;altitude, pour rajouter la vitesse et la route, avec gpsbabel on tape<\/p>\n<dl>\n<dd><code>gpsbabel -t -i gpx -f sortie-30-12-2012.gpx -o unicsv -x track,course,speed -F output.txt<\/code><\/dd>\n<\/dl>\n<p style=\"text-align: justify;\">cela va donner un fichier qui ressemble \u00e0 \u00e7a :<\/p>\n<dl>\n<dd><code>3,48.367354,-4.769260,-0.3,0.63,324.0,2012\/12\/30,10:15:14<br \/>\n4,48.367383,-4.769314,-0.8,2.57,309.2,2012\/12\/30,10:15:16<br \/>\n5,48.367382,-4.769321,-1.3,0.20,257.2,2012\/12\/30,10:15:19<br \/>\n6,48.367487,-4.769312,-2.3,0.69,3.2,2012\/12\/30,10:15:36<br \/>\n7,48.367630,-4.769355,-2.7,4.06,348.9,2012\/12\/30,10:15:40<\/code><\/dd>\n<\/dl>\n<p style=\"text-align: justify;\">on retrouve le num\u00e9ro du point, la position, l&rsquo;\u00e9l\u00e9vation, la vitesse (en m\/s), la route en \u00b0, puis la date et l&rsquo;heure. Maintenant sur le logiciel de montage, on va rep\u00e9rer dans le temps la s\u00e9quence vid\u00e9o sur laquelle on va placer l&rsquo;incrustation GPS. A partir du fichier<strong> output.txt<\/strong> on va cr\u00e9er un nouveau fichier contenant les points qui correspondent \u00e0 la s\u00e9quence vid\u00e9o, on l&rsquo;appelle <strong>points.txt<\/strong>. J&rsquo;ai cr\u00e9\u00e9 un petit script qui va cr\u00e9er autant de fichiers .txt qu&rsquo;il y a de points dans <strong>points.txt<\/strong> , il se lance en mettant en argument le fichier <strong>points.txt<\/strong> obtenu ci-dessus<\/p>\n<dl>\n<dd><code>#!\/bin\/bash<br \/>\nawk -F\",\" '{<br \/>\nlabel=\"label\"NR\".txt\"<br \/>\nprint \"V:\"$5*3.6,\"T:\"$8 &gt; label;<br \/>\n} ' $1<\/code><\/dd>\n<\/dl>\n<p style=\"text-align: justify;\">chaque fichier obtenu se nomme<strong> label+num\u00e9ro de point.txt<\/strong> et contient le champ avec le format suivant <strong>V:31.212 T:10:49:57<\/strong>. C&rsquo;est ce qui appara\u00eetra ensuite en incrustation dans la vid\u00e9o, \u00e0 cette occasion j&rsquo;ai converti l&rsquo;information de vitesse en km\/h, mais rien ne vous oblige \u00e0 appliquer d&rsquo;autres traitements. Ensuite j&rsquo;ai fait un deuxi\u00e8me script qui va cr\u00e9er une image gif avec le texte en bleu avec un fond transparent \u00e0 partir de chaque fichier .txt<\/p>\n<dl>\n<dd><code>#!\/bin\/bash<br \/>\nfor fichier in $(find . -name \"label*.txt\"); do<br \/>\nfullfilename=$(basename $fichier)<br \/>\nextension=${fullfilename##*.}<br \/>\nfilename=${fullfilename%.*}<br \/>\nlabel=$(cat $fichier)<br \/>\nconvert -background none -fill blue -size x15 -gravity center label:\"$label\" $filename.gif<br \/>\ndone<\/code><\/dd>\n<\/dl>\n<p style=\"text-align: justify;\">On le lance simplement en se mettant dans le r\u00e9pertoire o\u00f9 se trouvent les .txt. Et voil\u00e0 je me retrouve avec tout un stock d&rsquo;images qui j&rsquo;int\u00e8gre en diaporama dans mon logiciel de montage vid\u00e9o <a title=\"kdenlive\" href=\"http:\/\/www.funix.org\/fr\/linux\/index.php?ref=kdenlive\">kdenlive<\/a>. Seul probl\u00e8me le temps entre 2 points GPS n&rsquo;est pas constant, du coup je me suis fendu d&rsquo;un autre script qui va calculer la moyenne entre deux points, on le lance en mettant <strong>points.txt<\/strong> en argument<\/p>\n<dl>\n<dd><code><code>#!\/bin\/bash<br \/>\nawk 'BEGIN { FS=\",\"}<br \/>\nNR ==1 {<br \/>\nheure=substr($8,1,2)<br \/>\nminute=substr($8,4,2)<br \/>\nseconde=substr($8,7,2)<br \/>\ntemps1=heure*3600+minute*60+seconde<br \/>\ndelta=0<br \/>\ndiff=0<br \/>\n}<br \/>\nNR &gt; 1 {<br \/>\nheure=substr($8,1,2)<br \/>\nminute=substr($8,4,2)<br \/>\nseconde=substr($8,7,2)<br \/>\ntemps=heure*3600+minute*60+seconde<br \/>\ndelta=temps-temps1<br \/>\ntemps1=temps<br \/>\nsomme=somme+delta<\/code><\/code>}<br \/>\nEND { print somme\/(NR-1) }&rsquo; $1<\/p>\n<\/dd>\n<\/dl>\n<p style=\"text-align: justify;\">C&rsquo;est la moyenne qui d\u00e9termine le temps entre deux images \u00e0 la cr\u00e9ation du diaporama avec toutes les images obtenues. Ensuite dans la timeline, il faut faire chevaucher sur 2 pistes diff\u00e9rentes le diaporama et la s\u00e9quence vid\u00e9o, rajouter une transition composition, et faire une incrustation dans un coin des informations GPS, et le tour est jou\u00e9.<\/p>\n<p style=\"text-align: justify;\">Le plus compliqu\u00e9 dans l&rsquo;affaire est de faire co\u00efncider l&rsquo;information GPS avec la s\u00e9quence vid\u00e9o, tout est histoire de synchronisation entre le GPS et la cam\u00e9ra \u00e0\u00a0l&rsquo;avenir, je veillerai \u00e0 bien mette \u00e0 l&rsquo;heure ma GoPro, \u00e7a aide grandement ensuite \u00e0 s&rsquo;y retrouver.<\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Puisque je sors en planche \u00e0 voile avec ma montre GPS garmin forerunner, je cherchais une astuce pour pouvoir int\u00e9grer les informations de temps et de vitesse dans mes vid\u00e9os en incrustation. Je pense avoir trouv\u00e9 le moyen, m\u00eame si \u00e7a reste perfectible et oblige \u00e0 bien mettre \u00e0 l&rsquo;heure la cam\u00e9ra GoPro. Tout d&rsquo;abord &hellip; <a href=\"https:\/\/olivier.hoarau.org\/?p=1113\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Incrustation information GPS dans vid\u00e9o<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_share_on_mastodon":"0"},"categories":[5],"tags":[],"class_list":["post-1113","post","type-post","status-publish","format-standard","hentry","category-logiciels-libres"],"share_on_mastodon":{"url":"","error":""},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/peOjJ-hX","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/1113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1113"}],"version-history":[{"count":2,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/1113\/revisions"}],"predecessor-version":[{"id":1115,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/1113\/revisions\/1115"}],"wp:attachment":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}