Astuce: Fusionner les fichiers vidéos d'un dossier avec ffmpeg en une ligne

Si jamais vous avez besoin de fusionner toutes les vidéos d'un dossier comme par exemple, je sais pas mais des épisodes de Kaamelott qui ont été distribués par épisode, voilà de quoi le faire en deux commandes sous linux:

Bouton droit dans le dossier et Ouvrir dans un terminal puis:

find -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" \) | sort | awk '{print "file " $0}' > liste.txt

puis

ffmpeg -f concat -safe 0 -i liste.txt -c copy sortie.mp4

La première commande crée un fichier contenant tous les fichiers vidéos du dossier ordonnés par ordre alphabétique et précédés de «file »

La seconde fournit cette liste à ffmpeg qui se charge de générer un fichier vidéo avec...

Bien entendu, on peut enchaîner les deux commandes en une seule ligne:

find -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" \) | sort | awk '{print "file " $0}' > liste.txt && ffmpeg -f concat -safe 0 -i liste.txt -c copy sortie.mp4

Cela va de soi, je présuppose que ffmpeg est installé sur votre ordi, sinon sudo apt-get install ffmpeg

EDIT (wink JerryWham )

Histoire d'automatiser un peu le tout, on peut en faire un script pour Nemo ou Caja sous linux :

1. créer un fichier txt contenant le script:


#!/bin/bash

find -type f ( -name ".mp4" -o -name ".avi" -o -name "*.mkv" ) | sort | awk '{print "file " $0}' > liste.txt && ffmpeg -f concat -safe 0 -i liste.txt -c copy sortie.mp4

2. Coller le fichier dans le dossier script:

  • Pour Nemo : ~/.local/share/nemo/scripts
  • Pour Caja : ~/.config/caja/scripts

3. Rendre exécutable

En ouvrant un terminal dans ce dossier et en faisant un piti :


~/.config/caja/scripts$ chmod +x *

4. Utiliser le nouveau script !

Capture du 2024-06-14 09-50-58.webp

Etienne Ledoré ⏚:

Je pose une copie ici, c'est beaucoup trop drôle... (en particulier le moment où il prend conscience de ce qu'il dit et ne discerne aucun moyen de s'en sortir...)

Du coup, j'en ai fait un meme, servez-vous: le dupont moretti format !

meme-quand tu viens de dire une connerie devant toute la classe.webp

Hé, Dupont&dupond moretti, si t'as besoin de réviser les bases, soit tu viens en groupe de niveau faible avec nous soit tu regardes une petite «capsule» video: https://www.youtube.com/watch?v=Ekli0Hf6Ad4

Baltringue...

Des patients en psychiatrie privés de sortie pendant le passage de la flamme olympique à Nantes - Choses vues, sur le web et ailleurs

  1. Culte obsessionnel d'un symbole vantant la compétition et la supériorité d'un individu
  2. Obsession pour des jeux basés sur cette supériorité avec tout le symbolisme nauséabond sous-jacent
  3. Volonté de cacher, invisibiliser ou chasser tous ceux qui ne correspondent pas à ce modèle donc inférieurs
  4. Usage de termes allant dans ce sens, comme "premier de cordée" ou "ceux qui ne sont rien" par exemple
  5. Amalgames, généralisation de cas particuliers, victimisation et utilisation de la peur pour écarter ce qui est perçu comme le non soi
  6. Désignation officielle d'un ennemi commun
  7. Utilisation, que dis-je, instrumentalisation de la violence policière pour empêcher la contestation
  8. Refus systématique d'écouter la voix du peuple, même quand on lui a demandé son avis.
  9. Infantilisation du peuple et paternalisme.
  10. instauration d'une surveillance permanente de tout le monde en légitimant cette «nécessité» grâce à la peur instaurée au point 5
  11. recours à l'état d'urgence pour institutionnaliser ces mesures de surveillance
  12. grande sévérité avec les opposants politiques - même pacifiques - et grande tolérance vis-à-vis des «militants» proche de son camp - même violents ou menaçants (néonazis marchant en ordre serré dans la rue ou groupes policiers menaçant d'un coup d'état par exemple)
  13. détournement des institutions afin de contourner les outils de la démocratie et faire passer des lois dont personne ne veut (49.3 par exemple)
  14. chef d'état à l'ego démesuré qui empiète sur toutes les décisions à tous les niveaux

(Liste non exhaustive...)

Ça me rappelle quelque chose... Mais quoi?!

RIDITLETEUR-slash pages

Les slashpages sont les pages normalisées qu'on trouve sur les blogs... /about, /contact etc.

J'en connaissais quelques unes mais y'en a plein !

ASTUCE Html & JS : détecter quand on sélectionne un élément d'une datalist

En bossant sur l'appli que j'utilise pour mes cours, j'ai voulu ajouter un accès rapide à un document en tapant le début du nom de dossier dans un input alimenté par une datalist.

Bien entendu, je veux éviter de devoir passer du clavier à la souris plusieurs fois : tape un bout du nom, clique pour sélectionner, appuie sur entrée pour valider...

Donc, il faudrait que la sélection et l'ouverture du document se fasse:

  • quand je tape un bout de nom et que j'appuie sur entrée (il ira chercher le premier de la liste)
  • quand je tape le début, que j'utilise les flèches pour aller chercher celui que je veux et que j'appuie sur entrée,
  • quand je tape le début et que je clique sur le nom du document qui m'intéresse.

Et là, c'est le drame

En effet, autant on peut capturer un évènement sur un input, autant ce n'est pas possible sur les option ou le datalist

Donc, il faut gruger et agissant sur les events de l'input.

Je mets ici ma solution actuelle (c'est le code que j'utilise avec mon framework js perso parce que j'ai la flemme de changer ):

<input type="text" placeholder="accès rapide à un document" list="docs_list" id="input_docs_list">
<datalist id="docs_list">
    \\ici les option qui vont bien
</datalist>

<script type="text/javascript">
    on('keydown','#input_docs_list',function(e){ // ça, c'est mon VanillaJS
        if(e.keyCode==13||!e.key){ 
            // si on a appuyé sur entrée ou que l'évènement n'est pas déclenché par une touche (donc, c'est la souris)
            window.location.replace("?"+e.target.value);
        }
    });

    on('input','#input_docs_list',function(e){
        // celui-ci est pour firefox
        if(e.inputType=='insertReplacementText'){
            window.location.replace("?"+e.data);
        }
    })
</script>

J'ai testé sous Firefox, Chromium et Edge...

https://api.warriordudimanche.net/avatrine/

Après avoir commis BadGit, j'ai récidivé cet aprème avec Avatrine... qui génère un avatar sous forme de lettrine à fond de couleur.

Mais pourquoi me direz-vous ?

Parce que :

  1. j'ai trouvé ça joli quand je l'ai vu je ne sais plus où
  2. j'aime bien faire joujou avec Imagick
  3. je fais ce que je veux

Les paramètres

  • str: la chaîne
  • [color]: la couleur de fond (calculée par défaut avec un hash de la chaîne)
  • [sz]: la taille, 128 par défaut

Pour faire simple

En gros, vous lui passez une chaîne de caractères, genre un pseudo par exemple, et il crée une image avec la première lettre du pseudo sur un fond dont la couleur dépend de la chaîne. Et il fait une rotation de 30° (valeur totalement empirique trouvée au doigt mouillé) sur la lettre pour que ce soit plus joli.

Des exemples

?str=Bronco
?str=Bronco&color=red
?str=Bronco&color=blue&sz=256
?str=Jerrywham&sz=256
?str=Sammyfisher&sz=256

Conclusion

Je sais que j'ai déjà fait des générateurs d'avatars... ( voir sur la page d'API https://api.warriordudimanche.net ROR et Avatomic )

avatar (Ror)
avatomic
et que celui-ci ne servira probablement pas plus que les autres mais bon... c'est cadeau quand même !

Pense-bête installation de Linux Mint 21.3

Ma version à jour de la page de Timo et de Sebsauvage

Update de la distro

sudo apt update && sudo aptitude safe-upgrade

Install des derniers kernels

Capture du 2023-08-07 14-45-17.png

Capture du 2023-08-07 14-45-44.png

Installer les pilotes

Install des logiciels & environnements

sudo apt-get install apache2 php libapache2-mod-php php-json php-zip php-gd php-sqlite3 php-curl php-mbstring php-xml php-imagick php-xdebug sqlitebrowser gparted filezilla python3 sublime-text vlc kdeconnect syncthing gimp default-jre lutris signal-desktop

Wine

Installer wine 11 depuis les dépôts de WineHQ (avec winetricks)

sudo apt purge wine*
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key -
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/plucky/winehq-plucky.sources
sudo apt update
sudo apt install --install-recommends winehq-stable winetricks

puis avec winetricks

winetricks vcrun2022
winetricks dxvk
winetricks vkd3d
winetricks corefonts
winetricks xna40
winetricks -q win10

enfin ntsync:

# Activer manuellement ntsync:
sudo modprobe ntsync
#Charger automatiquement au démarrage:
echo ntsync | sudo tee /etc/modules-load.d/ntsync.conf

Désinstaller logiciels inutiles (à actualiser)

sudo apt purge hexchat hexchat-common libespeak1 libsonic0 libspeechd2 python3-speechd speech-dispatcher speech-dispatcher-audio-plugins gnome-orca mate-screensaver mate-screensaver-common brltty mono-runtime-common avahi-daemon xscreensaver-data-extra xscreensaver-data xscreensaver-gl-extra xscreensaver-gl java-common icedtea-netx-common pix pix-data onboard timeshift 

Optimiser les SSD (à terminer)

# changer le swappiness
echo "vm.swappiness=10" >> /etc/sysctl.conf

# Configurer Zram 
sudo apt install zram-config

configurer PHP

éditer php.ini

Le fichier se trouve dans /etc/php/NUMERO DE VERSION PHP/apache2/php.ini. Soit on l'ouvre via le terminal, soit on utilise l'éditeur de son choix.

On édite les lignes suivantes:

post_max_size = 20M
upload_max_filesize = 1000M
error_reporting = -1
display_errors = On
zend.multibyte = On

Pour limiter le nombre de processus de php, on ajoute à la fin

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       1
    MaxSpareServers       3
    MaxClients           12
    MaxRequestsPerChild   3
</IfModule>

Déplacer www de var vers Home

mkdir ~/www && mkdir ~/www/html && sudo chmod 777 ~/www && sudo mv /var/www /var/www_old && sudo ln -s ~/www /var/www

En cas d'erreur 403 forbidden voici la procédure complète à faire (la seule qui ait fonctionné chez moi)
sudo mv /var/www /home/eric/www

sudo ln -s /home/eric/www/www /var/www

Modifier les permissions :
Assurez-vous que le serveur web a les bonnes permissions pour accéder au nouveau dossier :
sudo chown -R www-data:www-data /home/eric/www

Vérifier la configuration du serveur :
Si vous utilisez Apache, vérifiez que la configuration pointe vers le bon répertoire. Modifiez le fichier de configuration si nécessaire :
sudo nano /etc/apache2/sites-available/000-default.conf

Changez la ligne DocumentRoot pour qu'elle pointe vers /home/eric/www.

sudo systemctl restart apache2

// en cas d'erreur 403
Vérifiez les permissions :
Assurez-vous que le dossier et ses fichiers ont les bonnes permissions. Exécutez les commandes suivantes :
bash

sudo chown -R www-data:www-data /home/eric/www
sudo chmod -R 755 /home/eric/www

Vérifiez la configuration d'Apache :
Ouvrez le fichier de configuration du site Apache pour vous assurer que l'accès au dossier est autorisé. Exécutez :
bash

sudo nano /etc/apache2/sites-available/000-default.conf

Assurez-vous que la configuration ressemble à ceci :
apache

<Directory /home/eric/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

sudo systemctl restart apache2

// si persiste


// ajuster les permissions des dossiers parents
sudo chmod o+x /home
sudo chmod o+x /home/eric

// ajuster les permissions de www
sudo chmod 755 /home/eric/www

sudo systemctl restart apache2

fin

Puis, on relance le serveur: sudo service apache2 restart

Réglages divers

  • aller dans le gestionnaire de mise à jour > édition > Préférences > Onglet «automatisation» > Maintenance automatique: cocher «supprimer les noyaux et les dépendances obsolètes» afin d'éviter que la partoche système n'enfle
  • Résoudre le problème de décalage de l'heure en dual boot: timedatectl set-local-rtc 1 # mettez 0 pour la remettre sur UTC
  • Raccourcis claviers:
    • windows+E pour lancer caja: dans raccourcis clavier, chercher «dossier personnel» et redéfinir le raccourci
    • redéfinir la capture d'écran pour avoir le menu sa ns faire de capture direct: dans raccourcis clavier, créer un nouveau raccourci, dans la commande tapermate-screenshot --interactive (pour mate ou gnome-screenshot --interactive pour cinnamon) puis ré assigner le raccourci prtScr.
  • en cas de souci avec la touche verr maj:
    • sudo apt install numlockx
    • Centre de contrôle > Fenêtre de connexion > Options, cocher Activer NumLock.
  • sur portable, pour allonger l'autonomie: sudo apt install tlp
  • Activer les canaux Européens pour le wifi : sudo iw reg set FR

Sources

#HELP ? Conseil pour un portable Linux

Salut les copaines !

Après mes déboires avec mon ordi portable, je sens que je vais devoir le changer...

Afin de m'éviter des maux de têtes à venir, je cherche un pc:

  • 🔴 compatible linux (mint/debian)
  • 🔴 Ram 16Go
  • 🔴 15p pour le pavé numérique
  • 🔴 plutôt léger (autour d'1,5 kg)
  • 🟠 si possible un clavier rétroéclairé

Je ne compte pas spécialement jouer avec donc pas besoin de carte graphique dédiée.

J'ai trouvé un lenovo sur https://linuxshop.fr/ordinateur-portable-linux/84-1188-lenovo-15p-r7-15-pouces-amd-ryzen-7-5700u-ram16go-ssd512go.html#/1-distribution_linux-ubuntu_2404_lts_recommande

Il est un peu cher mais bon, c'est mon anniversaire et j'ai l'autorisation de madame !

Seul bémol, pas de rétroéclairage du clavier (très utile pour coder)

Des conseils (sur ce modèle ou un autre) ?

Merci les copaines !

(...)

Fil RSS des articles