Uploader, la genèse !

in #dtube7 years ago

Avant de commencer à parler de l’uploader, je dois vous parler de la façon que j’ai intégré l’équipe de DTube.
Ça remonte à 6 ans en arrière ! (oui je sais DTube à moins de 1 an ^^).
Ça a commencé par la rencontre de @heimindanger en tant que salarié tous les 2 dans une entreprise où ont développé un site web eCommerce.
On a travaillé ensemble une bonne année avant qu’il vole de ses propres ailes !
On a gardé une bonne relation distante.
Un jour il me contacte et me demande si je voulais participer au projet, il m’explique le projet, je ne connaissais pas Steem, IPFS, Meteor, les crypto-monnaies... J’ai réfléchi et j’ai dit oui !

Les différentes versions

J’ai commencé à contribuer à DTube sur la version 0.3 il y a 4 mois avec la possibilité de traduire DTube en plusieurs langues https://steemit.com/dtube/@heimindanger/dtube-0-3-this-update-contains-so-many-new-features-i-could-not-find-a-good-title-for-it.

Ensuite, j’ai enchainé avec la création de toute pièce de l’uploader pour la version 0.5 il y a seulement 2 mois https://steemit.com/dtube/@heimindanger/d-tube-0-5-big-optimizations.

Enfin la possibilité d’avoir un aperçu de la vidéo sur la barre de défilement, ainsi que la possibilité d’envoyer le Snap pour la redimensionner et incruster le nouveau logo DTube, il y a 1 mois dans la v0.6 https://steemit.com/dtube/@heimindanger/d-tube-0-6-pushing-it-to-the-limit.

Mon 1er article !

Si vous avez suivi, je suis assez nouveau sur Steem et c’est aussi mon premier article sur internet, merci d’avance pour votre indulgence ^^

Le sujet de cet article concerne l’uploader ! J’ai décidé de faire cet article car beaucoup de personnes se questionnent sur le fonctionnement, je me suis dit que c’était une bonne raison de plonger dans le bain pour ce 1er article !

Pourquoi l’uploader ?

Pour répondre à des problématiques que rencontraient les utilisateurs et parce que ce n’était pas possible facilement en mode décentralisé !

Le 1er besoin était d’encoder les vidéos sources dans un format plus petit (480p) permettant à d’avantage de personne de lire les vidéos avec un débit internet faible.

Le 2e était d’avoir la possibilité d’avoir une barre de progression lors de l’envoi du fichier de la vidéo.

Nous avons ensuite profité (ayant sous la main la vidéo source !) pour encoder la vidéo dans un format vidéo et audio permettant d’être lu par le plus grand nombre des navigateurs sur le marché (H264 pour la vidéo et AAC pour l’audio).
Et ce qui nous a permis d’en profiter pour envoyer directement la vidéo source et la vidéo 480p directement dans IPFS et ainsi d’alléger le client de cette tache longue et instable à l’époque.
Dans la version 0.5, on a ensuite ajouté la création d’un Sprite de la vidéo permettant de visualiser grâce à la barre de défilement de la vidéo l’aperçu du moment de la vidéo.

C’est parti !

Voici l’explication bloc par bloc du fonctionnement de l’uploader qui vous permet d’envoyer des vidéos sur DTube !

Upload de la vidéo

b/ Envoi de la vidéo sur le serveur
f/ Récupération du jeton pour le suivi de l’encoding, la récupération des hash IPFS, …

Le cœur de l’Uploader

Pour un traitement rapide après la fin de l’upload, tout est traité en asynchrone et en parallèle, il y a seulement un jeton qui est renvoyé avec au préalable les demandes de création de Sprite (d), encoding (e) effectuées …

Encoding Daemon

L’encoding Daemon peut s’occuper de 2 taches différentes, la création des fichiers Sprites et l’encoding 480p du fichier source.

Fonctionnement de la création du Sprite permettant l’aperçu de la vidéo :

  • Extraction de 100 images de la vidéo source en 210*118 en respectant le ratio
  • Combiner les 100 images verticalement => permet de voir les 1ères images si l’image se charge lentement !
    Note : si la vidéo est inférieure à 100 secondes, l’extraction des images se fait avec 1 image par seconde, ce qui est largement suffisant.

Pour le fonctionnement de l’encoding 480p, la vidéo source est simplement convertie au format 854*480 pour une vidéo 16/9.
Une conversion vidéo en H264 est effectuée également ainsi qu’une conversion audio en AAC. Ainsi cette vidéo 480p pourra être lu par beaucoup de personnes et par plusieurs navigateurs, contrairement à la vidéo source.

Une fois chaque fichier prêt (Sprite ou fichier 480p), il est placé dans la queue IPFS.
La progression de chaque traitement est mise à jour toutes les secondes pour que l’utilisateur puisse la suivre.

IPFS Daemon

Le fichier est ajouté au réseau IPFS décentralisé.
Une fois que l’utilisateur récupère tous les hash via les appels répétés, l’article de la vidéo peut être posté sur le réseau Steem.

Finalement sur l’accueil

La liste des vidéos est extraite de la blockchain de Steem, et chaque vidéo contient un lien url provenant d’IPFS, hébergeant les Snap, vidéo, Sprite ...

Schéma global !

Extra : le Snap et l’incrustation logo DTube

Etapes :

  • Redimensionnement et rognage simultanée pour avoir une image finale de 210*118
  • Ajout dans IPFS de cette image finale
  • Ajout dans IPFS de cette image avec l’incrustation du logo DTube

Optimisations

Si un utilisateur venait à quitter la page d’upload après avoir envoyé la vidéo, l’encoding vidéo 480p et l’ajout dans IPFS deviendraient inutile et des ressources précieuses seront perdues.
C’est pour cela que si la page d’upload est fermée, les taches associées à cette vidéo source sur l’encoding vidéo, la création du Sprite, l’ajout dans IPFS … sont annulées !
Ce point a permis de gagner beaucoup de ressources il y a plusieurs semaines.

Limitations

L’encoding en 480p et la création du Sprite est pour l’instant limité aux vidéos inférieures à 20 minutes pour des raisons de cout. Ce qui correspond malgré tout à la majorité des vidéos envoyées sur DTube.
L’encoding de la vidéo source est pour l’instant limité au format 480p pour des raisons de cout également.
Note : C’est des choses qui vont évoluer et changer dans l’avenir !

La vidéo source

La source est gardé tel quelle, sans aucune transformation et limitation en format, taille, durée … mais il faut faire attention aux navigateurs et au débit internet des utilisateurs qui ne pourront peut-être pas visualiser la vidéo et ne pas voter du coup !
Une vidéo avec une plus petite taille, et un encoding en h264 pour la vidéo et AAC pour l’audio permettra à tous de voir votre vidéo source, pensez-y !

Prochainement

L’uploader évolue ! Le prochain article expliquera ces changements.

Conclusion

C’est mon tout premier article que je publie sur internet et aussi sur la blockchain Steem, soyez indulgent !
Merci à @heimindanger pour ses conseils pour la rédaction d'articles !
N’hésitez pas à laisser vos commentaires.
Depuis la dernière version v0.6 les choses se sont accélérer, l’affluence aidant et les défis techniques qui grandissent avec, et c’est plutôt motivant, à bientôt pour le prochain article sur l’uploader !

Le même article en anglais sera posté prochainement !

Liens

DTube: https://d.tube
Uploader: https://github.com/dtube/ipfs-uploader

Sort:  

Je le dis et le redis ! Vous etes au top la Team Dtube....
Avec ce boulot tombé... vous permettez a tout le monde un acces à la vidéo impeccable.... vous permettez de faire decouvrir le Monde...
Merci et bienvenu parmis nous ....
Et à très @bientôt.... au 12H de @steemauvergne 😉

Au top @superkoala !

Je trouve ces explications magnifiques, les schémas rendent le truc moins abstrait ça me permet de vraiment me rendre compte du bouzin.

Merci pour cet article, en attendant vos prochains ^^

C'est déjà du bon taff , bienvenue a toi en tous cas et vivement la 720p :D
keep going to the moon !

J’avoue que c’est le seul truc qui me bloque sur Dtube, mais après tout c’est comme tout on doit bien commencer par quelques chose puis l’améliorer peu à peu.

Si ça se trouve dans 1 an on aura le 1080p60 ça serait génial pour les vidéos de sports extrêmes.

oui tout à fait, ça va s'améliorer petit à petit, c'est la philosophie d'@heimindanger et de la mienne aussi! ne pas oublier @hightouch qui s'occupe de l'UI alors que moi pas du tout ^^

Bon résumé de comment fonctionne nos serveurs d'upload. On se reservira des schemas dans les docs :)

Et bravo de passer le pas de commencer a participer sur le reseau

Ah oui en effet bravo c'est ton premier post ;-)

You have collected your daily Power Up! This post received an upvote worth of 0.7$.
Learn how to Power Up Smart here!

merci!

Merci pour l' article!

This is great. Thank you for writing this up, @superkoala. I had an intuitive sense of how it worked, but this lays it out very clearly.

Thank you!, it's was the goal ^^

J’ai l’impression d’être un privilégié en lisant cet article.
Merci pour le partage !

Coucou bonjour,
merci pour ces explications surtout sur les coûts / annulations
En effet il arrive que l'UPload ne se finalise pas et qu'il faille recommencer.
Du coup ce qui a été uploadé TANT QUE c'est pas inséré dans la blockchain ça part en /dev/null et c'est perdu.
Pour l'encodage donc des ressources GFX / GPU comment ça ce passe dans le monde réel ?
A qui appartiennent les GPU qu'est ce que eux gagnent à mettre à disposition ces ressources ?

Comment on peut aider à l'amélioration ?

:)

Dans les tuyaux, on prévoit un outil permettant à ce qui le souhaite de faire sur son poste ce qui se fait dans l'uploader, @heimindanger en a parlé recemment dans discord. Pas de date annoncé pour l'instant. Le grand avantage c'est qu'il n'y aura plus d'attente!

+1 Merci pour les infos, content de voir que la French est aux avant poste sur la plateforme. Si vous avez besoin de quoi que ce soit surtout n’hésitez pas demander.