PROJET AUTOBLOG


Le blog de Mitsu

Archivé

Site original : Le blog de Mitsu

⇐ retour index

HTML5: petit test de compression vidéo

vendredi 28 décembre 2018 à 19:45

Pour le prochain standard vidéo NETVC, l’un des principaux candidats proposés à l’IETF est le format AV1, développé par le consortium AOMedia.

AV1 profite de nombreuses avancées du VP10 (Google), Daala (Xiph, Mozilla) et Thor (Cisco). Parmi ses contributeurs on peut citer quelques poids lourds du multimédia en ligne tels que Facebook, Microsoft, Netflix, Amazon Video, ainsi que des fabricants de puces tels qu’Intel, AMD, ARM, Broadcom, … Last but not least: l’association VideoLAN, développant notamment le lecteur multimédia VLC (et dont je recommande cet article par Jean-Baptiste Kempf, président de l’association)

AV1 fait son petit bonhomme de chemin, l’implémentation principale version 1.0 utilisant désormais le bitstream fixé, et le développement se focalise à présent sur l’optimisation de l’encodage/décodage logiciel, tandis que les premières puces de décodage matériel pourraient sortir en 2019.

Les premiers tests objectifs et subjectifs placent AV1 directement face (ou au dessus) à son concurrent à brevets HEVC, et distance les communs VP9 et H.264 AVC.

Côté navigateurs, AV1 peut être lu avec Chrome 70+ ou Firefox 64+, et VLC à partir de 3.0.5.

Bref, je voulais jeter un coup d’œil à ses performances.

Protocole technique

Pour ce test subjectif à la louche, j’ai utilisé:

La vidéo « Sundance in 4k (Ultra HD)« , récupérée depuis YouTube selon la meilleure qualité disponible (le code 313: vidéo seule au format VP9 résolution 3840×2160 pixels).

De cette source, j’en extrais un dixième de seconde à la position 20s avec ffmpeg, en utilisant en format de sortie la compression sans pertes ffv1:

ffmpeg -ss 00:00:20 -i Sundance\ in\ 4k\ \(Ultra\ HD\)-4pSzhZ76GdM.webm -t 0.1 -c:v ffv1 zsource.mkv

Cet extrait, ffmpeg en compose 3 frames. Je sélectionne la 2e frame. (ps: pour toutes les images ci-après j’utilise la compression sans pertes PNG)

Cette scène me semble pas mal pour mon comparatif, car elle associe une grande variété de nuances de couleurs, et la caméra effectue un mouvement vers la gauche. Je cible une zone en particulier avec Imagemagick:

convert zz0002.png -crop 700x500+1200+1200  z.png

Cette zone montre en premier plan des branches d’arbres que je prédis très difficiles à compresser, en second plan des cimes d’arbres aux couleurs variées, et un arrière plan plus flou en dégradés de couleurs.

J’effectue un premier test avec les différents codecs, le but étant de parvenir à un poids de fichier très proche. J’adapte alors le paramètre du bitrate jusqu’à obtenir des poids assez homogènes.

Si j’y suis parvenu avec tous les autres, x265 m’a posé soucis: quel que soit le bitrate exigé, le poids de fichier demeure 93.7 ko (contre ~45 ko pour mon étalon). J’inclurais son résultat tout à la fin à titre d’info, mais il n’est pas comparable aux autres.

Theora · libtheora

Premier sur le ring, le premier format sans brevets supporté par Firefox pour le HTML5, développé par Xiph.

ffmpeg -i zsource.mkv -b:v 100k -c:v libtheora z_theora.mkv

H.264 AVC · libx264

Face au toujours immensément populaire H.264, du MPEG-LA ?

ffmpeg -i zsource.mkv -b:v 750k -c:v libx264 z_x264.mkv

VP8 · libvpx

Le second format sans brevets VP8, développé par On2/Google

ffmpeg -i zsource.mkv -b:v 100k -c:v libvpx z_vp8.mkv

VP9 · libvpx-vp9

Son successeur VP9, développé par Google

ffmpeg -i zsource.mkv -b:v 1480k -c:v libvpx-vp9 z_vp9.mkv

AV1 · libaom-av1

Et AV1. J’insiste: l’encodeur est loin d’être optimisé, il a fallu près de 5 minutes de traitement là où les autres codecs ont bouclé en moins d’une seconde.

ffmpeg -i zsource.mkv -c:v libaom-av1 -b:v 1460k -strict experimental -threads 8 z_av1.mkv

Et donc HEVC qui a eu droit au double bitrate parce que réticent à mes paramètres…

ffmpeg -i zsource.mkv -b:v 60k -c:v libx265 z_x265.mkv

VP9 vs AV1

Faut vraiment y aller à la loupe, mais AV1 fait légèrement mieux que VP9 🙂

Espérons que les codecs AV1 seront sensiblement optimisés !

Fichiers encodés

(fini!) Appel: recherche de fichiers rares

dimanche 19 août 2018 à 13:01

update 17 octobre 2018:  j’ai pu récupérer tous les fichiers manquants!


Peut-être que d’ancien·nes habitué·es de Fansub Streaming liront ceci, alors je lance une bouteille à la mer..

Alors voilà: en voulant récupérer mes archives depuis hubiC, j’ai droit à une vilaine surprise: de nombreux fichiers retournent une erreur « Object Not Found » ou « IO Exception in Server FileStorage Communication ».

Alors oui hubiC repose sur des systèmes de fichiers poussés dans leurs derniers retranchements, mais voilà après plus d’un mois ma boucle rclone n’a pu récupérer que de rares fichiers, et tourne en vain depuis. Le support hubiC ? Mailé il y a 15 jours, pas de réponse. Bref.

J’ai pu récupérer la plupart des fichiers parce qu’ils étaient encore trouvable par BitTorrent, XDCC, HTTP. Mais il m’en reste pour 7,2 Go de fichiers coincés sur hubiC et introuvables, et ça me crève le cœur car ils ont une valeur nostalgique/sentimentale.

Si vous avez un ou plusieurs de ces fichiers dans vos archives, merci de me contacter au plus vite par tous moyens !

De plus, si comme moi vous aviez religieusement téléchargé les émissions de Nolife depuis Noco en utilisant youtube-dl, voilà ce qui me manque 🙁

——————

Même si vous n’avez qu’un seul de ces fichiers, foncez me contacter 😢

Update: récupéré de hubiC

Update: merci à Bouzig !

Update:  Merci à 0xF4F et aux seeders !

Update: merci aux anonymes !

Désactiver le chiffrement Android

mercredi 20 décembre 2017 à 13:49

Contexte: en tentant de passer de LineageOS à LineageOS+microG, je me suis foiré·e: le système a juste été wipé et les GApps étaient encore là (Open GApps-Pico). Mon téléphone est débloqué, rooté, ADB activé, et utilise TWRP comme recovery (bref, il a déjà subi mille outrages depuis sa sortie d’usine il y a moins de 2 mois, et cet article peut ne pas du tout être utile à votre situation).

Or à la config les GApps sont un peu traîtres, et peuvent utiliser votre schéma/code de déverrouillage comme schéma/code de chiffrement. C’est pas vraiment ce que je voulais. Et après quand j’ai enfin pu proprement effacer tout le système et installer LineageOS+microG pour réduire au maximum les dépendances à Google, bah le chiffrement est encore là et ne peut être désactivé dans Paramètres > Sécurité.

Étape 1: désactiver tout schéma/code de verrouillage

Je ne l’avais pas fait et du coup après retrait du chiffrement le système perd la correspondance et refuse de déverrouiller votre téléphone; dans ce cas j’ai pu supprimer « à la dure » le verrouillage en démarrant sur TWRP et supprimant les fichiers suivants dans /data/system:

Source de l’astuce

Donc vaut mieux proprement retirer tout code de verrouillage avant de passer à la suite:  Paramètres > Sécurité > « aucun »

Étape 2: faire une sauvegarde

J’ai redémarré le téléphone sur le recovery TWRP, entré le code de déchiffrement et fait un backup des partitions « system » et « data » vers la carte MicroSD (bien choisir la destination de sauvegarde « sdcard », pas internal storage). Bah oui j’ai vraiment pas envie de devoir réinstaller mon système et toutes les apps, tout reconfigurer etc. TWRP fait une copie « à la dd » donc ça peut mettre quelques minutes.

Étape 3: supprimer la partition chiffrée

(source de l’astuce)

J’ai redémarré le téléphone sur le recovery TWRP, mais sans entrer le code de déchiffrement (appuyer sur « cancel » à la demande du code de déchiffrement). Ainsi TWRP travaille sur les partitions principales, et non les volumes chiffrés LUKS-dmcrypt.

Ensuite:  Wipe > Advanced, cocher « data », et procéder à la suppression de la partition.

Redémarrer le téléphone, sur le recovery TWRP.

Étape 4: restaurer la sauvegarde

Déjà bonne nouvelle: TWRP ne demande plus de code de déchiffrement, confirmant que l’en-tête LUKS-dmcrypt n’est plus présent. Ni aucune data.

Aller dans Restore, sélectionner la sauvegarde précédemment faite sur la carte MicroSD, et patienter les quelques minutes nécessaires à la restauration de partition, redémarrer, et voilà: plus de chiffrement, aucune perte de données 🙂

Régimes, économies et gouvernements du futur

jeudi 26 octobre 2017 à 15:36

L’une des réponses de Stephen Hawking sur son AMA Reddit d’il y a 2 ans qui me travaille beaucoup dernièrement est celle-ci:

If machines produce everything we need, the outcome will depend on how things are distributed. Everyone can enjoy a life of luxurious leisure if the machine-produced wealth is shared, or most people can end up miserably poor if the machine-owners successfully lobby against wealth redistribution. So far, the trend seems to be toward the second option, with technology driving ever-increasing inequality.

La technologie

L’année 2017 touchera bientôt à sa fin, et je crois pouvoir dire que le premier mot de sa réponse est obsolète: ce n’est plus « if », c’est « when ».

Ce questionnement s’est ravivé quand j’ai commencé à regarder l’émission La Faute à L’Algo, diffusée par la chaine Nolife. Notamment son épisode 8, sur l’évolution du travail.

Parallèlement, il ne se passe pas une semaine sans qu’un industriel n’annonce une « percée » tantôt sur les voitures sans chauffeur, tantôt sur la livraison par drone, tantôt sur la vidéosurveillance à identification comportementale, tantôt sur la capacité d’un algorithme à surpasser les meilleurs joueurs humains sur les jeux (vidéo et non) les plus complexes.

Les progrès de l’apprentissage machine sont exponentiels. Algorithmes déjà capables de créer de l’art dans un style « façon Van Gogh » à partir d’un gribouillis, déjà capables d’identifier vos animaux de compagnie, … L’évolution est si rapide que la plasticité cérébrale humaine est insuffisante pour imaginer aujourd’hui ce qui sera possible dès 2018.

Prenez Le 5e élément, le film de Luc Besson. Le fait qu’en 2263, Korben Dallas conduise manuellement un taxi est déjà absurde, fut-il aérien, à peine 20 ans après la sortie de ce film quand Uber et consorts disruptent le système du taxi, et que des premiers véhicules roulent sans intervention humaine.

Et alors que Minority Report, qui date de 2002, imagine des capsules magnétiques de transport urbain sans chauffeur pour 2054, je pense que cela sera réalité autour de 2025 déjà. Ou du moins, en version à roues sans déplacement vertical.

Comme l’impression que même la science-fiction est disruptée, rendant très difficile d’imaginer la société du siècle prochain..

Bref, partons du principe que tous les secteurs d’activité soient majoritairement voire totalement robotisés dès 2030.

La politique

La Faute à l’Algo mentionne souvent « l’algorithme-président ». Ce qui est bien sûr ironique n’est sur le fond pas absurde: la gestion politique d’un pays entier étant/devenant beaucoup trop compliquée pour un·e président·e quel que soit le nombre de ministres autour, le pays se verrait dirigé par un algorithme (soit directement, soit encore un humain assisté par ordinateur). Et sachant que les politiciens confient déjà aux algorithmes la planification de leur campagne électorale et des éléments  de langage à placer pour « faire mouche », ils n’y seraient pas réfractaires.

Quoique: si je prends par exemple Donald Trump, un pays et sa population a beaucoup à gagner à déléguer le pouvoir à un algorithme plutôt qu’à un humain émotif et irrationnel.

« Déléguer » ? Comment est-ce que le principe démocratique pourrait-il être appliqué à ce modèle politique ? Le peuple élit un algorithme parmi plusieurs, ou élit l’un des programmes projets présentés par un même algorithme ? Et fondamentalement, qui serait à l’origine de cet algorithme ? Un parti ? Une entreprise ? Des développeurs sur Github ? Toute la population à travers une « auto-programmation » via l’actualité et des sondages d’opinion en ligne ?

L’économie

Quand est-ce qu’arrivera l’année-charnière, où la majorité de la population d’un pays devient inemployable, à la manière des chevaux de trait après l’invention de la Ford T ? Mon estimation au doigt mouillé: 2030.

Ce qui laisse très peu de temps pour arrêter de stigmatiser les chômeurs (« c’est des fainéants, des parasites, des traîtres envers la France qui se lève tôt » etc etc -c’est un discours qui ne choque pas aujourd’hui), et développer un modèle économique tenant compte de la robotisation massive du travail.

Je vois plusieurs options radicales:

J’ai du mal à anticiper l’effet de la démocratisation des cryptomonnaies (Bitcoin, Monero, Ethereum,..), puisque leur effet émancipateur de la monnaie étatique rend leur aspect fondamentalement démocratique mais d’autant plus compatible avec l’option numéro 1.

L’option 2, je sens encore une énorme opposition de la part de la population, surtout plus âgée de 40 ans, qui sont majoritaires et qui ne veulent pas voir « leur labeur de toute une vie » être distribué à tout le monde sans contrepartie. Le système du salaire de base peut apparaître comme un compromis, mais quelle serait la valeur d’un travail d’un humain (même non-marchand) dès lors qu’un robot le fait mieux ? En tout cas, le simple fait que ce n’est pas au centre de toutes discussions politiques en fin 2017 m’indique que les humains n’auront pas mis ça en place d’ici 2030.

L’option 3 enfin, repose sur un principe plus simple: l’algorithme à la tête de l’Etat gère tout, de l’urbanisation à la production de la moindre tomate-cerise, pour exploiter au mieux les ressources disponibles afin de maintenir et améliorer le confort de vie de toute la population. Cela peut être très radical, jusqu’à la planification de la natalité, le traitement médical du sentiment de colère et de haine des humains pour pas qu’ils s’entre-tuent, et l’auto-défense contre le luddisme. Un communisme nouveau, en gros.

Stephen Hawking, pessimiste ou réaliste ?

Stephen Hawking constate avec raison que la robotisation actuelle s’accompagne d’un accroissement des inégalités sociales. Des réformes profondes sont donc urgentes, avant que les algorithmes ne soient plus crées par des ingénieurs altruistes, au risque sinon de voir des « guerres civiles robotiques » ou l’annihilation du « rustre surplus de population » en faveur d’une élite minoritaire et privilégiée.

Et ce, dans les toutes prochaines décennies.

Lave-vaisselle DIY

samedi 30 septembre 2017 à 19:07

Une des caractéristiques communes des personnes qui travaillent dans le numérique est celle de la haine envers les tâches périodiques et répétitives à effectuer manuellement.

Et avec un brin de fibre hacker, la problématique de cette tâche répétitive devient un défi avec comme résultat une solution efficiente voire originale.

Contexte: je vis dans un appartement de petite taille, avec un emplacement en cuisine qui force à faire un choix: machine à laver, ou lave vaisselle. C’est ce premier équipement qui occupe la place. Donc jusqu’à récemment, j’ai été dans la contrainte de devoir laver manuellement ma vaisselle, une fois par semaine. Une tâche très répétitive et vraiment peu passionnante qui me prenait plus d’une heure, surtout à cause du couple couteau + fourchette (~4 par jour = 28 objets à frotter).

Ma quête pour un lave-vaisselle format mini a été de courte durée: vu sa taille, c’est mon combi four+micro-ondes qui aurait dû être relégué ailleurs. Vu que c’est surtout les couverts qui m’empoisonnent la vie, quid d’une nettoyeuse aux ultrasons ? Si telle machine est tout indiquée pour nettoyer lunettes, verres de montre et autres pièces de monnaie, je n’en ai pas trouvé de taille suffisante pour y mettre des couverts.

Bref, il me fallait hacker le système et créer mon propre lave vaisselle.

Lave vaisselle: the basics

Un lave vaisselle est une machine qui:

Puisque j’ai de l’eau chaude (à ~60°C selon mes mesures), que je peux trouver sans difficulté du détergent dans le commerce (et il y a pléthore de recettes de produit vaisselle DIY sur le net), et que je dispose d’un lavabo pouvant faire office de compartiment lave-vaisselle, il me fallait un appareil convertissant de l’énergie électrique (prise 230V) en énergie cinétique (courant d’eau pour nettoyer la vaisselle). Créer un maelstrom.

Faut que ça bouge

Mon idée initiale était simple: les bateaux utilisent le principe d’action-réaction pour avancer, en propulsant de l’eau au moyen d’une hélice afin de bouger dans le sens inverse.

Un ventilateur ? Non, il me fallait un truc submersible, un mini-moteur hors-bord. … autant dire que ce qui s’en approchait le plus sur Amazon c’était une turbine à pile pour bateau Playmobil, à l’hélice 10 fois trop petite pour actionner un volume d’eau suffisant.

Par la magie des objets similaires de la catégorie aquariophilie, Amazon me suggérait une pompe submersible.

Ça me séduisait: je vérifiais débit d’eau, alimentation, longueur de câble, usage « prévu », résistance à l’encrassage,…  Et ça tenait la route. Ce genre de pompe est normalement utilisé pour propulser l’eau hors d’un étang pour créer une fontaine, ou remonter l’eau au sommet d’une petite cascade, drainer des conduits, ….  avec une pression jusqu’à 2 bar. J’achetais.

Test et résultat

Mode opératoire:

  1. mettre dans le lavabo les couverts sales
  2. remplir le lavabo d’eau chaude jusqu’à immerger tous les couverts
  3. placer la pompe contre une paroi, mettre en marche
  4. ajouter le détergent
  5. laisser la magie opérer durant quelques heures

Et ça fonctionne ! La vaisselle en ressort plus brillante que jamais et il me suffit de les prendre par poignées entières et les rincer à grande eau, puis laisser sécher à l’air. Plus propre qu’avec une éponge surtout dans tous les petits interstices.

Mon eau chaude étant moins chaude que dans un lave-vaisselle « mainstream », je compense par une durée de lavage plus longue et une dose un peu plus forte en détergent (conso moindre en électricité contre surdosage en détergent, je pense que ça reste écologiquement avantageux face à un lave vaisselle).

La pompe étant conçue pour résister à des débris végétaux et autres impuretés d’aquarium, elle résiste sans mal aux quelques miettes détachées (et au delà du grain de riz c’est stoppé par le filtre de l’entrée d’eau).

En orientant bien la pompe je crée un tourbillon/maelstrom qui fait passer le détergent dans les moindres recoins et amène les miettes et autres saletés dans son milieu pour qu’ils s’y posent, loin de la vaisselle.

Au fil de mes utilisations, j’ai observé que les ventouses de la pompe adhères parfois mal aux parois (moins lisses que du verre), et donc la pompe repose au fond du lavabo. Afin de palier à tout risque d’inondation, je veille à remplir suffisamment le lavabo pour que, dans l’éventualité où la pompe se détacherait et s’orienterait jet d’eau vers le haut, le flux soit amorti et ne parvienne pas hors du lavabo. En plaçant la pompe contre le fond, je lui laisse virtuellement aucune chance à ce que le flux soit vertical en cas de détachement.

Voilà, à la prochaine et restez hackers 😉