Sébastien

Sébastien

lundi, 14 juin 2021 20:44

Supprimer le son d'une vidéo

ffmpeg -an -i in.webm -f lavfi -i anullsrc -c:v copy -c:a aac -shortest -fflags +shortest -max_interleave_delta 200M -f nut - | ffmpeg -f nut -i - -vn -c copy silent.m4a

Douteriez vous de mes compétences de traduction de la langue de Shakespeare vers le français ? Vous le pouvez je vous l'accorde

Aujourd''hhui, je voulais faire un petit point sur le travail d'universitaires de l'Université de Cambrige, qui ont sorti un outil dont le nom "in english" est bien ApplyMagicSauce. Alors, oui, il y a un point commun avec le titre de cet article.

Cet outil analyse, depuis le contenu de l'archive Twitter ou Facebook, votre personnalité. Rien que ça.

Vous avez dit archive ?

Facebook propose à n'importe quel utilisateur de pouvoir demander le contenu de l'archive de son profil, avec tout ce que l'utilisateur a publié sur Facebook, depuis l'ouverture de son compte. Attention, gros fichier. Tellement gros que le fichier n'est pas téléchargeable directement. Il faut en faire la demande sur Facebook, ce dernier lançant un process de création de cette archive, vous alertant par mail ou par notification (dans Facebook) de sa création.

Et y'a quoi dans l'archive Facebook ?

Pour le savoir, le meilleur moyen est de demande la prépapration de l'archive Facebook,  La page d'aide de demande d'archive de Facebook explique comment la demander :

  1. Cliquez sur en haut à droite de Facebook.
  2. Sélectionnez Paramètres et vie privée, puis cliquez sur Paramètres.
  3. Dans la colonne de gauche, cliquez sur Vos informations Facebook.
  4. À côté de Télécharger vos informations, cliquez sur Voir.
  5. Pour ajouter ou supprimer des catégories de données dans votre demande, cochez ou décochez les cases situées à droite de Facebook.
  6. Sélectionnez d’autres options, notamment :
    • Le format de votre demande de téléchargement.
    • La qualité des photos, des vidéos et des autres types de contenu multimédia.
    • Une plage de dates spécifique propre à vos informations. Si vous ne sélectionnez pas une plage de dates, vous demanderez toutes les informations pour les catégories sélectionnées.
  7. Cliquez sur Créer un fichier pour confirmer la demande de téléchargement.

Lorsque "le grand réseau social bleu" sera prêt, sur votre compte Facebook (et peut être même par mail), vous recevrez une notification de possibilité de téléchargement du fichier.

Le fichier d'archive Facebook est-il volumineux ?

Oui et non, vous pouvez d'une part spécifier ce que vous voulez voir apparaitre, mais le volume de ce fichier dépend aussi principalement du nombre de posts que vous publiez. Le mien a fait 200 Mo mais j'ai sélectioné le minimum d'options dans la demande de fichier

L'analyse de l'archive

Revenons au coeur de cet article : l'analyse de l'outil d'analyse de votre archive Faacebook. Cette analyse s'effectue en uploadant votre ficheir d'archive sur https://applymagicsauce.com. Une fois uploadé, il suffit de lancer l'analyse de l'archive pour en découvrir votre profil, ou  plutôt l'analyse de votre profil. Voyons ce que j'ai découvert.

Analyse de l'age

L'outil commence mal : il 'a rajeunit de 17 ans. Alors que cela veut il dire ? Que l'outil ne marche pas ? Peut être, mais peut être cela vient il aussi du fait que je me sens tellement jeune dans ma tête que je publie des posts "jeunes"  :) Enfin, sur ce premier point, c'est un raté.

Analyse du genre

Je viens de découvrir que je n'étais pas hétéro à 100%. Incroyable, je l'ignorais ! Alors comment cela peut il se produire ? Mon environnement d'amis de Facebook ne comporte pas que des hétéros. Et je suis donc amis avec des personnes non hétéro, voire non binaire. C'est la seule explication que j'y vois. D'alleurs, je suis toujours ouvert aux femmes qui (m)le désirent... :)

Les 5 grands traits de personnalités

L'outil propose ensuite de sortir les 5 grands traits de perssonnalité répartis de la manière suivante, après traduction :

  • Conservateur et traditionnel
  • impulsif et spontané
  • complentatif
  • compétitif
  • Décontracté et détendu

Là encore, me connaissant, jamais je n'aurais pu me définir avec les résultats qui me sont attribués. Mais alors, JAMAIS !

Pour conclure, l'outil sort un graphique sur la notion de potentiel Leardership. il a fallu que j'aille revoir la définition exact de leadership car le résultat m'étonnait beaucoup. Mais c'est bien la notion de "meneur"  Me trouver un taux de meneur à 46%, ce n'est pas forcément ainsi que je me définis !

Conclusion

L'outil a le mérite d'exister mais que dire d'autre ? Est-ce moi qui ne me juge pas ainsi ? Est-ce l'outil qui a raison ? Je reste perplexe....

 

Vous aussi vous cherchez parmi des bibliothèques complètes de musiques libres de droit pour agrémenter ou colorer une vidéo, une présentation, un petit film ou que sais-je encore ? Et bien je viens de découvrir l'outil qu'il vous faut ! Un générateur en ligne de musique : ecrett.
Disponible via l'URL https://ecrettmusic.com, cet outil va vous permettre, après quelques réglages vraiment très simples, un point fort de l'outil, de générer une musique aléatoire. Enfin aléatoire, dans le sens où la musique n'a pas été déjà créée auparavant.
L'interface de création se compose de 3 volets : Le premier va vous permettre de sélectionner un thème musical, un genre, une scène msicale.

ecrett
Le deuxième volet, en bas de l'écran vous permet de choisir, après avoir sélectionner la durée de votre musique, où, sur une timeline répétitive, de lancer votre sample. Dans ce deuxième volet, vous pourrez aussi paramètrer votre musique : tempo, volume, durée de votre boucle.
Le troisième et dernier volet vous permet d'uploader une vidéo, car le but de cet outil est véritablement la création de musiques pour illusrtrer vos vidéos, dans le seul but de voir si votre musique "colle" bien à la vidéo.

Entre le premier et le deuxieme volet, 4 petites icônes vous permettent de gérer vos favoris, télécharger et voir votre historiques de musiques (limité à 10 dans la version gratuite), uploader votre vidéo pour prévisualiser la musique placée sur la vidéo et enfin, le dernier onglet vous donne accès à votre historique vous permettant, pour chacune des musiques que vous avez créé, de voir la date, de charger votre création dans l'interface, de télécharger votre création au format WAV et enfin, de supprimer votre création de votre interface. Alors oui c'est du wav mais vous trouverez un excellent article interessant pour le transformer en MP3 avec ffmpeg !


L'outil étant très simple, et bien... nous en avons (dajà) fait le tour !
Une fois vos paramètres sélectionnés, un gros bouton bleu "Create music" vous permet de ... générer votre oeuvre. Mais le travail ne commence seulement, si j'ose dire. Car dans la fenêtre du bas où votre oeuvre a été créée, vous avez une liste déroulante où, par défaut, le réglage est Tempo et volume. Vous l'aurez compris, un clic sur ce bouton vous permettra d'ajuster le tempo, sur une échelle de 0 à 100%, mais aussi de sélectionner le volume de chacun de ces 4 choix : Mélodie, musique de fond, basses et batterie.

Licence d'utilisation

Alors une fois générée et télécharger me direz-vous, que peut on faire de cette musique ? Est-elle réutilisable ?

La réponse est OUI, bien entendu. Mais uniquement sur les plans payants de l'outil. En revanche, les musiques générées gratuitement le sont uniquement pour agrémenter un média sonore ou video. Il n'est pas autorisé d'utiliser cette musique en tant que seule création d'oeuvre d'esprit. C'est subtil mais logique.
La page d'accueil de ce site explique sur 4 points, ce que l'on a le droit de faire ou pas avec la licence associée à la musique générée.

ffmpeg -i image.jpeg -i word.mp4 -i video.mp4 -filter_complex "[0][1]scale2ref[img][vid];[img]setsar=1[img];[vid]nullsink; [img][2]overlay=(W-w)/2:(H-h)/2" output.mp4

  • image.jpeg : Image a appliquer sur la vidéo
  • word.mp4 : video sur laquelle appliquer l'image
  • [img][2]... : positionnement de l'image a la taille proportionnée de la video

Cela se passe en deux temps. Dans un premier temps, créer une fichier texte de la forme  :

file large.mp3
outpoint 250.0

file small.mp3

file large.mp3

inpoint 250.0

Puis

ffmpeg -f concat -i list.txt -c copy combined.mp3

INPOINT :
Au point d'entrée du fichier. Lorsque le démultiplexeur ouvre le fichier, il recherche instantanément l'horodatage spécifié. La recherche est effectuée afin que tous les flux puissent être présentés avec succès au point d'entrée. Cette directive fonctionne mieux avec les codecs intra-trame, car pour les codecs non intra-trame, vous obtiendrez généralement des paquets supplémentaires avant le point d'entrée réel et le contenu décodé contiendra très probablement des trames avant le point d'entrée. Pour chaque fichier, les paquets avant le point d'entrée du fichier auront des horodatages inférieurs à l'horodatage de début calculé du fichier (négatif dans le cas du premier fichier), et la durée des fichiers (si elle n'est pas spécifiée par la directive de durée) sera réduite basé sur leur point d'entrée spécifié. En raison des paquets potentiels avant le point d'entrée spécifié, les horodatages des paquets peuvent se chevaucher entre deux fichiers concaténés.
 
OUTPOINT :
Point de sortie du fichier. Lorsque le démultiplexeur atteint l'horodatage de décodage spécifié dans l'un des flux, il le gère comme une condition de fin de fichier et ignore le courant et tous les paquets restants de tous les flux. Le point de sortie est exclusif, ce qui signifie que le démultiplexeur ne produira pas de paquets avec un horodatage de décodage supérieur ou égal au point de sortie. Cette directive fonctionne mieux avec les codecs et les formats intra-trame où tous les flux sont étroitement entrelacés. Pour les codecs non intra-trame, vous obtiendrez généralement des paquets supplémentaires avec un horodatage de présentation après le point Out. Par conséquent, le contenu décodé contiendra très probablement des trames après le point Out. Si vos flux ne sont pas étroitement imbriqués, vous risquez de ne pas obtenir tous les paquets de tous les flux avant le point Out et vous ne pourrez peut-être décoder que le premier flux jusqu'au point Out. La durée des fichiers (si elle n'est pas spécifiée par la directive duration) sera réduite en fonction de leur point de sortie spécifié.
 
 
 

Il existe dans FFMPEG un filtre permettant d'ajouter du "lag", une sorte de ralentissement de votre vidéo. Pour y accéder, la commande est

ffmpeg -i "c:\Users\33651\Downloads\Hair - 43633.mp4" -vf lagfun sortie.mp4

samedi, 20 février 2021 09:54

Transformer une image en ... CSS !

Partant du principe que nous avons à peu prés tous désormais un navigateur dit moderne, et notamment dans mon cadre professionnel pour lequel je suis intervenu, j'ai voulu fabriquer grâce à CSS 3 une forme de ticket de boucherie, forme sur laquelle je voulais afficher simplement et la clef primaire d'un enregistrement. Tous les informaticiens comprendrond, pour les autre, je voulais juste afficher la référence unique de l'enregistrement de la base de donnée, pour le retrouver facilement.

Bien que j'ai compris comment fonctionnait, en CSS, la manière de dessiner une forme, il faut bien avouer que le manque de temps (et d'envie) m'empêche de coder le CSS adéquat, pour afficher cette forme relativement complexe.


Source : Pinterest

 
Après quelques recherches sur Internet, je suis tombé sur ce site que je voulais vous faire partager à travers cet article : img2css, hébergé sur le domaine http://javier.xyz.
Le principe est relativement simple. Il repose sur un drag and drop d'une image que vous souhaitez convertir en CSS. Pour ma part, je suis partie d'une image au format JPEG. Je reconnais n'avoir pas testé les autres formats des images.
Comme la forme que je souhaite obtenir en CSS et un ticket de boucherie, cous conviendrez que cette forme peut être qualifiée de complexe (il ne s'agit pas là d'un carré, un rectangle, mais bien un polygone, avec des formes arrondies).
Une petite recherche sur un site d'images libres m'a permis de trouver une image représentant un ticket de boucherie, sur un fond blanc. La couleur du fond a l'air importante, car pour pouvoir sortir la forme du fond, il faut une "zone de rupture", deux couleurs bien distinctes.
Une fois votre drag and drop effectué sur basket zone à l'aide de votre souris, de manière quasiment transparente et instantanée, vous verrez s'afficher à l'écran l'ensemble du code CSS correspondant à l'image que vous souhaitez transformer, aindi que le <div> "portant" le CSS.
Tout ce code est un code HTML, cela signifie que d'une manière technique, votre code généré et tout simplement une division HTML (un <div>), qui va prendre en paramètre une/des propriété de style. C'est dans ce style que la forme va prendre forme.
Un simple copier-coller du code généré dans une page HTML, bien entendu dans le body, va afficher "l'image", ou plutot la <div> et son style que vous avez demandé à transformer en CSS.
Alors, me direz-vous, cette forme et son contenu sont super simple, et je suis d'accord avec vous. C'est la raison pour laquelle j'ai récupéré l'icône représentant le spectacle "Le Lac des cygnes" programmé prochainement dans notre commune. Vous pouvez imaginer la complexité de l'images entre les cygnes, les danseurs, le titre et surtout le dégradé du fond de l'affiche. 
Je n'ai pas été déçu du résultat.
Afin de conclure cet article avec quelques présentation CSS issu d'images, je joins quelques transformations que j'ai réalisé avec cet outil.
 
 Image CSS généré
 lac des cygnes
 
 
lundi, 08 février 2021 21:11

Premier petit module Joomla

Il y a maintenant 15 jours, je me suis attaqué ou développement d'un petit module pour le CMS Joomla, module sans paramètre, permettant d'afficher sous la forme hierarchisée, l'intégralité des tags enregistrés dans votre Joomla. Je m'intéresse uniquement des tags associés à des articles de JoomlaContent. (je ne parlerai pas donc des tags K2, JEvent ou autre composants)

Avec une formation de programmeur plutôt procédural, je dois avouer que les concepts objet ne sont pas du tout mon fort, et j'ai dû faire face à pas mal d'interrogation, grâce notamment au groupe Lorraine, dont les développeurs m'ont aidé à comprendre des concepts, qui m'ont permis d'arriver au résultat que je vais vous présenter.
Petite note à tout les puristes qui vont lire cet article : je vous rappelle que je ne connais absolument pas grand-chose en programmation objet, je ne connais que quelques concepts. En revanche je suis ouvert à tout commentaire.
Dans cet article que je vais donc vous présenter cet affichage sous la forme d'un arbre simple, c'est-à-dire des listes à puce intégrées les unes aux autres.
Le gros point faible je trouve dans la programmation objet, c'est que nous avons besoin d'une multitude de fichiers différents pour se conformer au développement en couches. Même si je comprends le concept, même si je comprends la façon de faire, même si je suis entièrement d'accord avec toute la théorie, je trouve particulièrement pénible et fatiguant de jongler entre les différentes les différentes couches !
Pour les débutants comme moi qui ne comprennent pas de quoi je parle dans les couches, il s'agit de différencier la partie données, la partie interface graphique, et de fabriquer une troisième partie on pourrait symboliser comme ciment de l'ensemble des fonctions. C'est troisième partie qui permet de relier les différentes couches entre elles.
Dans notre cas, les couches vont être des fichiers différents, chacun d'entre eux ayant sa propre fonctionnalité technique, dont voici la présentation.

Un fichier XML

À partir de fichier existant, j'ai fabriqué ce fichier XML dans lequel nous retrouvons de grandes familles d'informations, des métadonnées comme le nom des modules, son auteur, sa version, une description. Parallèlement à ces métadonnées, nous allons rester dans une deuxième partie, l'ensemble des fichiers composants le module que nous sommes en train d'écrire. 
 
Description du module grâce à un fichier XML
 
Comme vous pouvez le voir sur la copie d'écran, dans la balise files, nous allons chaque fichier mis les uns en dessous des autres. L'ensemble de ces fichiers formant le module, on va se référer à ce fichier XML pour savoir de quoi il en retourne.
Sur cet exemple précis, nous voyons un premier fichier XML, c'est-à-dire ce fichier présentement de description compose d'une description, c'est-à-dire à la fois la partie graphique, la partie programme, ainsi qu'une template simple de mon module.
Je vous passe la description de chacune des balises utilisé dans mon fichier XML, vous comprendrez facilement ce que veut dire même, auteur, version, description ainsi que file si vous êtes un tant soit peu anglophones.
 

Capture décran 2021 02 08 à 21.18.53

Le fichier Helper

Grâce à un groupe joomia lorraine sur Facebook, j'ai compris la définition du terme Helper. Suite à ma question "c'est quoi un fichier Helper", un développeur joomla m'a répondu que c'était une classe générique permettant de répertorier des fonctions utiles partout et qui ne sont pas liées à des vues ou actions."
Du coup, le développeur souligne le fait mais cela tombe sous le sens, c'est une classe statique pouvant être appelée de n'importe où. On peut donc voir un fichiers helper comme une trousse à outils, dans laquelle nous allons piocher les outils dont nous avons besoin au moment où ce besoin se présente. Pour celles et ceux qui comme moi ne maîtrisent pas entièrement encore la programmation objet, le développeur souligne qu'un fichier helper n'a pas besoin de sa classe pour être instanciée puisqu'elle est statique.
Dans l'exemple que je vous propose, je crée une méthode qui s'appelle getHello() - je dois vous avouer que j'ai travaillé à partir d'autres fichiers qui comportent ce nom, le nom de cette méthode n'est donc pas logique -, méthode qui dans notre cas va récupérer des informations issues de ma base de données afin de les afficher.
Comme nous sommes en programmation objet avec différentes couches bien séparées, ces informations, une fois récupérées, je ne devrais pas les afficher directement, mais les balancer dans une vue. (je ne l'ai pas fait ici)
Je vais donc dans un premier temps, récupérer ces informations. Cette action s'effectue par l'ensemble de ma classe GetHello(). Une fois ces informations récupérées dans un curseur, c'est-à-dire un espace mémoire où je récupère toutes les informations issues de ma base de données, je vais les afficher.
Je parcours donc mon curseur de résultats, et pour chacun d'entre eux, je vais rechercher la propriété level , propriété affichant le niveau du tags. Je compare si ce niveau est supérieur ou inférieur au niveau lu précédemment dans ma boucle. Dans la mesure où j'affiche mes tags dans des listes à puce imbriquées, je dois pouvoir détecter si mon élément courant je suis en train de lire est au même niveau que le précédent, s'il est enfant du précédent, ou bien s'il est parent du précédent, afin de pouvoir organiser les <ul> et <li>.
Pour pouvoir faire le faire, étant donné que nous sommes dans une boucle, j'utilise une variable tampon qui stocke le niveau de l'élément précédent, cette valeur et en stocker dans la base de données, afin de pouvoir dans cette même boucle, comparer si l'élément courant est fis où ancêtre de l'élément lu précédemment.
En fonction du cas, je crée une liste à puce enfant où je reviens au niveau parents dans ma liste, symbolisé dans mon code par l'affichage de <il> ou</ul>.
Désormais que j'ai la liste des tags lus depuis ma base de données, je dois, pour chacun d'entre eux, lui affecter un lien permettant, lorsque l'utilisateur cliquer dessus, au programme joomia de relier les enregistrement taggés avec ce tag. J'ai codé ici l'adresse url en récupérant l'adresse courante à partir des variables d'environnement serveur que PHP nous donne. Je me suis inspirée des url fourni dans Joomla à partir d'un tag.
 <?php
public static function getHello($params) {
// Obtain a database connection

$db = JFactory::getDbo(); // Retrievetheshout
$query = $db
  ->getQuery(true) //retourne un nouvel objet avec TRUE
  ->
select($db->quoteName('title')) //Nomdu champs ds laBDD
  ->from($db->quoteName('joomla_tags')) //nom de la table
  ->order('path ASC');

$db- >setQuery( $query);
$column = $db- >loadColumn();
$t = $db->loadRowList();
echo '<div class="hashtags" >' ;
echo '<div style="background-color: yellow;color:red;border:2px solid blue;">Plan des hashtags</div>';
$result = $db->loadObjectList();
echo "<ul>";
$sav_niveau=0;
for ($i=0;$i<count($result) ; $i ++) {
  if ($result[$i]->level < $sav_niveau){
 echo "</ul>"; 
}
  if ($result[$i]->level > $sav_niveau){
        echo "<ul>";
  }
   // "calcul de l'URL du lien à mettre
     $URL = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE?'http' : 'https';
   $URL .= "://". $_SERVER['HTTP_HOST'];
   $URL . = $_SERVER['SCRIPT_NAME'] ;
   $URL . = $_SERVER['QUERY_STRING'] ;
   $URL .= "/component/tags/tag/";
   echo '<li><a href="'.$URL.$result[$i]->alias.'">'. $result[$i]->title.' ('.$result[$i]->level.')</a></li>';
   $sav_niveau=$result[$i]->level ;

   $sav_niveau=$result[$i]->level ;
   }
   echo "</ul>";
   echo "</div>";
}
}
?>

Le fichier tmpl/default.modTree.php

Afficher permet le point d'entrée du mobile. Je ne vous cacherai pas que c'est un simple copier-coller adapté avec, que je n'ai pas touché. À priorie, ce fichier permet de définir une variable à jumia, intégrer le fichier Helper.php, et de définir cake paramètres ainsi que afficher le layout.
<?php 
// Nodirect access 
defined('_JEXEC') or die;// Include the syndicate functions only once 
require_once dirname(__FILE__) . '/helper.php';
$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_treeTags'); 
?>

Le fichier modèle

Dans mon répertoire de modèle, qui s'appelle TMPL, nous allons créer le fichier par défaut intitulé default.php.
Un fichier défini _JEXEC, correspondant à un point d'entrée sécurisée dans le code de joomia. 
<?php 
// Nodirect access 
defined('_JEXEC') or die;// Include the syndicate functions only once 
require_once dirname(__FILE__) . '/helper.php';
$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_treeTags'); 

Sur la vidéo, un bug est survenue : le dossier dont je parle ne s'affiche pas. Téléchargez mon archive avant de visualiser la video pour suivre

zip

 

Cette technique, tré utilisé sur les aperçus des site pornographiquesn permet de faire un mini-film a partir d'un film lon, du dit film. Le résulta sera la concatenation sc scème clef de votre film, scene que vous allez extraire et concaténer, via cette commande

ffmpeg -i in.mp4 -vf "select='between(t,235,238)+between(t,490,493)+between(t,870,873)+between(t,1200,1203)',setpts=N/FRAME_RATE/TB,scale=640:-2" -an out.mp4 Dans la clause select, spécifier pour chacune des scenes clef, des valeurs en secondes de début et de fin des scènes à récupérer du fichier en entrée (in.mp4)

 

Page 1 sur 37