Sébastien

Sébastien

ffmpeg -y -i cut.mp4 -i typing.mp3 -filter_complex "[0:v]drawtext=enable='between(t,0,3)':fontfile=fonts/RobotoBoldCondensed.ttf:text='Finding Nemo...':fontcolor=white:fontsize=24:x=50:y=h-h/5+20[v0]; [1:a]volume=0:enable='not(between(t,0,3))'[a3]" -vcodec libx264 -c:a libfdk_aac -map "[v0]" -map "[a3]" -preset ultrafast -async 1 output.mp4

  • not : permet de ne pas avoir de son
  • between : prend en compte la mise à 0 du vomlume entre la seconde 0 et la seconde 3

ffmpeg -i out.mp4 -filter_complex "color=black@0:100x100,format=yuva444p[c];[c][0]scale2ref[ct][mv31];[ct]setsar=1,split=1[t31];[t31] drawtext=text='text':x='main_w/2-text_w/2+70':y=210:fontsize="100":fontcolor=black,drawtext=text='text2':x='main_w/2-text_w/2+75':y=340:fontsize="100":fontcolor=black, rotate=-0.07:ow=rotw(-0.07):oh=roth(-0.07):c=black@0[txta31];[mv31][txta31]overlay=enable='between(t, 0, 4.15)':x='min(0,-H*sin(-5.07))':y='min(0,W*sin(-5.07))':shortest=1" result.mp4

 

Michel Edouard LECLERC étai l'invité ce jeudi 7 mars, dans les fauteuils rouges de Complément d'enquête.
Au cours de son interview, en "lisant" entre les lignes, le PDG de Leclerc a annoncé l'affichage du nutriscore des aliments dans ses supermarché.

Tout le travail de Leclerc sur l'affichage des nutriccore, sera fait grâce à l'API d'OpenFoodFact, API que nous avons déjjà veu en partie sur ce blog.

Informations et résultat... à suivre

mercredi, 27 février 2019 19:52

Afficher un texte de haut en bas sans arrêt

ffmpeg -loop 1 -y -i a.jpg -i b.mp3 vf "drawtext="fontsize=120:fontfile=arial.ttf:textfile=1.txt:y=h-40*t"" scale=852x480 setsar=1:1  -vcodec libx264 -b:v 1000k -preset superfast 3.mp4

L'effet obtenu sera le même que si vous voyiez de l'interieur d'un ascenseur, les murs défiler.

  1.  Dans un premier temps, il faut créer la bande d'images supperposées
  2. Une fois le fichier jpeg créé, la commande est
    ffmpeg -loop 1  -t 61 -i 0.jpg  -filter_complex "color=white:s=1280x720[bg];[bg][0]overlay=y=-'t*120':shortest=1[video]"  -r 200/1 -preset ultrafast -map [video] "D:\FFMPEG\output.mp4"

A l'heure où j'écris cet article, un test a été réalisé par une tierce personne, ce n'est pas moi.
Depuis sa bande d'images, il obtient la video suivante :

samedi, 16 février 2019 18:38

Attacher une miniature à une video

Cette commande fonctionne à partir de ffmpeg 4.0 :

ffmpeg -i video.mp4 -i image.png -map 1 -map 0 -c copy -disposition:0 attached_pic out.mp4
  • video4.mpg : fichier en entrée sur laquelle attacher l'image
  • image.png : nom du fichier à attacher au fichier vidéo
  • out.mp4 : fichier fimal avec l'image attachée à la vidéo
samedi, 02 février 2019 07:38

Récupérer des données de Youtube

La problématique :

Aujourd'hui, je vous propose d'aller "lire" des données des vidéo que vous uploadez sur youtube. Oui, je choisis désormais Youtube face à Dailymotion, pour la foule de fonctionnalités supplémentaires. En voila d'ailleurs une : récupérer des métadonnées sur votre page web, métadonnées déjà saisies sur Youtube. Pourquoi réinventer la roue, redupliquer des données, au risque que celles-ci soient erronées lors d'une malheureuse recopie avec des erreur, fautes de frappes... Non, là, on colle toutse les données dans youtube, et on va aller les rechercher.

Le service interrogé : YOUTUBE

Bon, oui le reprends le plan habituel mais vous avez déjà compris que le service que nous allons aller interroger est bel et bien Youtube. Nous n'irons pas poster des données (car je ne me suis pas encore interessé aux requêtes GET mais ca viendra sûrement un jour.)
Je n'ai pas fais de page d'exemples détaillées sur cet article mais si vous en souhaitez une, elle pourra être faite sur demande. Toutefois, j'ai quand même intégré les retours de données brutes. Mais je pense que vous savez désormais, comment extraire des données XML ou JSON facilement avec tous les exemples déjà créés.

Explications

La commande cURL est générique, elle est basée sur le modèle suivant :

curl -i -G -d "q=surfing&maxResults=25&part=snippet&key=[VOTRE_CLEF_API]" URL_DE_L'API

Voila le détail des 4 paramètres rouges cités ci-dessus :

  • q=surfing : "surfing" est le mot clef recherché pour la requete (ce que vous auriez tapé dans le champs de recherche de youtube)
  • maxresult=25 : la recherche se limite à 25 résultats, libre à vous de changer cette valeur, en gardant à l'esprit des possibles timeouts.
  • part=snippset
    Le paramètre "part" est un paramètre requis pour toute demande d'API qui récupère ou retourne une ressource. Le paramètre identifie une ou plusieurs propriétés de ressource de niveau supérieur (non imbriquées) à inclure dans une réponse d'API. Une ressource vidéo comprend les parties suivantes:
         - fragment
         - contentDetails
         - fileDetails
         - joueur
         - traitementDétails
         - enregistrementDétails
         - statistiques
         - statut
         - suggestions
         - sujetDétails
  • key=votre_clef_API. Vous l'aurez compris, c'est la clef API que vous avez demandé à Youtube et que vous devez passer ici en paramètres
  • URL_DE_L'API : Cette URL est bien une adresse web, mais il faut la voir non pas comme une page web, mais comme une chaine de caractères, qui prend effectivement la forme d'une URL, pour spécifier à l'API ce que vous souhaitez qu'elle vous retourne. Je répète, il faut vraiment voir cette chaine comme une chaine d'authentification de ce que vous demandez au service web. Toute la doc est sur le site de youtube : https://developers.google.com/youtube/v3/docs/

Et bien nous voila parés, on s'y met ?

Exemples

Voici la liste des commandes cURL testées.

1. Afficher le détail d'une vidéo : https://www.googleapis.com/youtube/v3/videos?id=kLCoFizS9xE&part=snippet%2CcontentDetails%2Cstatistics&key=[VOTRE_CLEF_API]

2. Faisons une recherche sur youtube sur un le mot clef "surfing" et récupérons les 25 premiers résultats  : https://www.googleapis.com/youtube/v3/search?q=surfing&maxResults=25&part=snippet&key=AIzaSyAwzSsXc0YVOgYag7z3rSl0tH0VmDZe1fk

3. Récupérons les information du canal (autrement appelé chaine) youtube (pour la référence du canal, aller sr la page web du canal dans les détails de la chaine) : https://www.googleapis.com/youtube/v3/channelSections?channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

4. Affichons un thread de discussion : https://www.googleapis.com/youtube/v3/commentThreads?videoId=kLCoFizS9xE&part=snippet%2Creplies&key=[VOTRE_CLEF_API]

5. Récupérons toutes les vidéo d'une playliste : https://www.googleapis.com/youtube/v3/playlistItems?playlistId=PLBCF2DAC6FFB574DE&maxResults=25&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

6. Listes de lectures appartenant à la chaine youtube identifiée par le paramètre channelId de la requete : https://www.googleapis.com/youtube/v3/playlists?maxResults=25&channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

 

7. Liste des catégories associables à une video : https://www.googleapis.com/youtube/v3/videoCategories?regionCode=US&part=snippet&key=[VOTRE_CLEF_API]

 

8 Liste des métadonnées de la vidéo passée en paramètre (champ id) : https://www.googleapis.com/youtube/v3/videos?id=Ks-_Mh1QhMc&part=snippet%2CcontentDetails%2Cstatistics&key=[VOTRE_CLEF_API]

 

Cette commande va prendre une "photo" de votre video, régulièrement, à l'intervalle de temps spécifié.

La commande est on ne peut plus logique :

ffmpeg -i original.mp4 -vf 'select=if(gt(t\, if(ld(0)\, ld(0)\, 1))\, st(0\, ld(0) + 20)\; 1), setpts=N/FRAME_RATE/TB' posters/poster%d.png
  • n : Le numéro (séquentiel) de la trame filtrée, à partir de 0.
  • frame_rate : fréquence d'images, définie uniquement pour la vidéo à fréquence d'images constante
  • tb : Base de temps des horodatages d'entrée.
Page 1 sur 12