Au cours des années, j'ai testé et utilisé des dizaines de façon différentes de diffuser mes tutoriels vidéos. 
Cela peut paraitre anodin, mais il est vraiment difficile à l'heure actuelle de trouver une bonne méthode réunissant sécurité, rapidité et simplicité. Ci-dessous, mon bilan autour des différentes solutions de diffusion vidéo sur internet, avec leurs avantages et inconvénients. 

Nouveau Lecteur vidéo

Pour ceux qui n'ont pas envie de lire tout ça, et qui ont juste envie de voir ce que donne le nouveau lecteur vidéo des tutoriels, vous pouvez dès à présent le tester sur cette page. N'hésitez pas à répondre au sondage présent sur cette page. Attention, flash player requis. Ci-dessous, les raisons de ce nouveau lecteur.

Le cahier des charges

Les tutoriels diffusés sur ce site sont en HD 720p, en 1280x720, et ont une durée moyenne de 40min (de 10min à 2h). Il faut donc une plateformes acceptant les films de longues durées. Youtube par exemple n'acceptait pas les fichiers dépassant 15min il y a encore quelques temps. 

Les vidéos doivent pouvoir être masquée de la plateforme vidéo publique, pour garder une exclusivité de lecture sur mon site. La encore, Youtube ne permet pas de masquer complètement une vidéo de la plateforme. Un clic sur le logo Youtube contenu dans le player, et vous vous rendez sur une page youtube, facilement partageable, même si non répertoriée publiquement. 

Enfin, il faut que la diffusion soit un minimum sécurisée. Il n'existe pas de sécurité absolue dans la diffusion des vidéos sur internet, on peut par exemple à tout moment faire une capture d'écran pendant 1h. Mais c'est déjà un peu plus fastidieux. L'idée ici est de rendre plus compliqué à un éventuel pirate le téléchargement des vidéos. Du moins plus compliqué qu'un clic sur une extension tel que DownloadHelper ;) 
Là encore, les principales plateformes comme Youtube, Vimeo, Daily, etc.. sont très mauvaises en terme de protection de contenu. Et c'est normal, cela leur couterait cher pour pas grand chose, la majorité de leur contenu n'étant pas sensible. 

Pour simplifier, il y a deux solutions possibles respectant ces contraintes :

  • Encoder et héberger soit même ces fichiers sur son serveur de streaming, avec ou sans CDN, et gérer tout ça soit même, avec son propre lecteur, en étant organisé. 
  • Passer par une OVP (Online Video Platform) professionnelle, qui s'occupera de tout (ingestion, encodage et diffusion), et l'intégrer à son site avec leurs APIs

Concernant les plateformes vidéos, j'en ai essayé beaucoup au fil des années. A commencer par Dailymotion, Vimeo, Youtube et Blip, dès 2007.
Tant que le site offrait seulement des tutoriels gratuits, pas de soucis. Mais avec l'arrivée du modèle Premium, je ne pouvais plus utiliser ces services, conformément à leurs conditions d'utilisation, qui bien souvent n'autorise pas d'utilisations commerciales.
Même si le tutoriel est gratuit, je ne peux par exemple par héberger une vidéo Vimeo ou Blip sur mon site ou d'autres contenus sont payants. 

Cloudfront, serveurs de streaming pour tous

Fin 2008, Amazon Web Service, qui était déjà connu pour ses offres d'hébergements low-cost avec S3, lanca Cloudfront
Cloudfront est un CDN (Content Distributed Network) performant et accessible, avec des serveurs dans de nombreux pays. Son intégration étroite avec S3 rend le déploiement d'un serveur de Streaming simple à moindre frais. 
J'ai utilisé cette méthode pendant presque 1 an, sur l'ancienne version du site. Cela fonctionnait bien, mais était un peu fastidieux à gérer manuellement (encodage, uploads, etc..), et l'est devenu encore plus lorsque j'ai voulu rendre les tutos accessibles depuis les appareils mobiles (quelle idée !).

La lecture sur appareils mobiles

Avec la popularisation de l'HTML5 et de sa balise vidéo, les téléphones portables et les tablettes ont enfin eu un accès presque facile aux vidéos. Les principales plateformes ont toutes réencodés leurs catalogue en mp4 H64, supporté par Safari et Chrome, voir en WebM pour Firefox. Mais cela demande de nombreux formats différents à calculer, selon les appareils, et la vitesse de leurs connexions à internet. 
Je me suis donc mit à ré-étudier les offres des OVP, qui avaient toutes évoluées, avec de nouvelles fonctionnalités, tel que le support des appareils mobiles devenue très à la mode.

Les plateformes vidéos professionnelles

Entre temps, Vimeo a lancé Vimeo Pro, et Dailymotion DM Cloud, pour les utilisations commerciales.
Vimeo Pro est une bonne solution pour mes vidéos de résultat, avec l'aspect communautaire, mais n'offre pas de moyen de diffusion sécurisé tel que le streaming RTMP ou RTMPe, la version encryptée du Real Time Messaging Protocol.
J'attends néanmoins avec impatience la présentation de leur nouveau service Pay to View en 2013, pour voir si cela a évolué de ce coté là. 
DM Cloud, offre du vrai streaming, mais la tarification à l'heure consommée, et le manque de personnalisation du player m'ont découragé après un court essai. 

Je me suis donc mit à essayé des plateformes moins connues du grand public, mais très utilisées par les entreprises, les marques et les médias pour la diffusion de contenus vidéos. 
Prenons par exemple Brightcove, Ooyala, Kaltura. Ces 3 plateformes offrent tout ce que l'on peut éspérer d'un service vidéo professionnel, mais les petites sociétés comme la mienne ne sont clairement pas leur coeur de cible. 
Leurs fonctionnalités sont similaires, elles offrent toutes une bonne sécurisation, avec parfois même des DRMs (la fausse bonne idée, qui revient avec chaque nouveau médium, mais surement obligée pour arriver à signer Hollywood), le support des appareils mobiles, des TVs connectés, etc.. rien à dire de ce coté là.

Mais coté tarif, pour ma consommation, ce n'est pas possible. Je consomme actuellement 1800Go par mois sur la lecture des tutoriels du site, et cela augmente chaque mois.
Pour ce volume, les 3 services ci-dessous m'ont toutes proposé un contract annuel (pas de billing mensuel), avec des prix à 4 chiffres, qui souvent n'incluent pas la bande passante dans le tarif, ou n'en offre pas assez pour couvrir mes besoins. 
Il faut bien comprendre que ces plateformes sont destinées aux gros sites ou marques, et clairement, pas aux petites structures. 

Bits on the Run et Vzaar

Heuresement, deux plateformes sortent du lot, et s'intéressent aux startups ! 

Bits on the Run est la plateforme vidéo développée par Longtail, les créateurs du player JW Player. C'est celle que j'ai utilisé depuis la nouvelle version du site, pendant un peu plus de 6 mois. Tarification à la consommation, Streaming RTMP adaptatif, support HTML5, sur le papier tout était bon ! 
Seulement, plusieurs problèmes ce sont posés. Tout d'abord, le streaming RTMP adaptatif (similaire au dynamic streaming HTTP qu'utilise Youtube par exemple).
Il consiste à encoder différentes versions de votre fichier vidéo, à différents débit  Le player délivre ensuite la vidéo adapté au débit, le tout en temps réel. Lancez un téléchargement pendant la lecture d'un tutoriel, et hop, la vidéo devient tout de suite de moins bonne qualité. 
De nombreux lecteurs avait des soucis, et n'arrivais jamais à avoir la vidéo en HD, qui n'était proposée qu'aux très bonnes connexion.
Même avec la fibre à 94mo/s chez moi, le player passait sur une qualité basse sans raison.. pas très agréable sur des tutoriels ou l'on a besoin de voir clairement l'interface. 

Vzaar. Je l'utilise depuis quelques mois, et cela s'est plutôt bien passé. Ils offrent un pricing plus que raisonnable pour mon volume, un bon service, du streaming RTMPe, une sécurisation par token, support mobile, bref, tout ce qu'il me fallait. 

Seulement, leur implementation du streaming n'est pas la plus sécurisée qui soit en comparaison des autres plateformes pros, et il est très simple avec l'inspecteur web de safari ou chrome de récupérer un lien direct vers le mp4 en quelques secondes. Il a beau avoir un token expirant ou bout de quelques minutes, cela laisse de la marge pour le récupérer. 
C'est avec cette méthode que les vidéos ont été récupérées par un pirate la semaine dernière. Après avoir comparé les fichiers disponibles en téléchargement, je me suis rendu compte que cela venait du serveur de streaming (.mp4), et non des téléchargements proposés sur le site (.mov). 

Enfin, le support HTML5 qu'offre ces 2 plateformes est à mes yeux une petite faille de sécurité, mais ce n'est pas leur faute. HTML5 ne supporte pas le streaming, et pour cause, le RTMP et une technologie propriétaire développée par Adobe pour le Flash Player. 
Il faut donc obligatoirement avoir un lien direct vers son fichier H264 ou WebM dans la balise <video>. Bien sur, la plupart des services appellent "sécurisée" la mise en place d'un token (une clé d'accès unique, générée à chaque chargement de la page) derrière le fichier. Mais pour que cela fonctionne, il faut précisé une durée d'expiration. Et souvent, elles sont de plusieurs minutes.
La récuperation de vidéo devient encore plus simple, il suffit de ne pas installer le player flash, ou de le bloquer, pour obtenir le lecteur HTML5. A partir de la, un tour dans le code source, et il n'y a plus qu'a chercher un lien vers un .mp4, et le coller dans sa fenetre de téléchargement. 

Plus de support mobile HTML5, pour le moment

Face à ce problème, la solution la plus simple est de ne plus assurer le support HTML5, et de rester sur un bon vieux lecteur Flash, installé sur la majorité des ordinateurs encore aujourd'hui. 
Au vu des statistiques de fréquentation depuis des appareils mobiles sur mon site, je ne pense pas que cela en gêne beaucoup. 

Cependant, je pense que l'utilisation des tablettes (en guise de deuxième écran) pour suivre un tutoriel est intéressante et va se répandre dans les prochains mois. C'est pourquoi je songe sérieusement à développer en 2013 une petite application iOS/Android, qui permettra aux membres premiums de lire tous les tutos du site, avec possibilités de les télécharger sur la tablette pour une lecture hors ligne. Je pense que cela plaira à certains, mais je n'engage pas sur une date, la priorité pour le moment étant la production de contenu avant tout. 

Et puis d'ici quelques mois, lorsqu'HTML5 supportera une méthode sécurisée pour la diffusion de vidéos, les vidéos seront alors de nouveaux disponibles sur tout support.

Le gagnant : S3 + CloudFront

Attention passage un peu plus technique réservé à ceux qui connaissent un peu Amazon Web Services

Au final, je suis de retour chez Amazon, avec S3 et Cloudfront. Il est maintenant relativement facile de mettre en place une distribution de streaming privée avec Cloudfront. 
L'idée est de stocker ses vidéos sur un bucket S3, et de donner une autorisation de lecture sur ces fichiers à la distribution Cloudfront, via les ACLs.  
Il faudra ensuite générer un token non pas pour autoriser à l'utilisateur final l'accès au fichier, mais seulement autoriser Cloudfront à venir lire ce fichier. Ces tokens ont d'ailleurs une structure différentes que ceux utilisés par S3.
Au final, seule votre distribution Cloudfront a accès au fichier source. 

Pour la partie player, je suis revenu sur le JW Player, qui fonctionne très bien avec Cloudfront. 

Il ne me reste plus qu'a réuploader une énième fois la centaine de tutoriels (français et anglais), et le nouveau lecteur propulsé par CloudFront sera disponible sur tous les tutos.
Au moment d'écrire cet article, les 7 derniers tutoriels l'utilisent déjà. 

Bien sur ce n'est pas encore parfait, il y aura toujours des failles et des pirates, mais cela répond à mes besoins, tout en utilisant un CDN performant et réputé, qui permettra un accès rapide aux vidéos, partout dans le monde. Et le tout, au tarif grossiste, bien plus bas que les OVP, qui l'utilisent également, et facturent leurs marges. 

Vous pouvez tester le nouveau lecteur vidéo sur cette page.