On entends beaucoup parler actuellement du conflit entre Adobe et Apple (lancé pour rappel par Steve Jobs fin avril). Je voudrais m’attarder non pas sur ce conflit mais la technologie vidéo utilisé par l’iPhone et l’iPad et d’en décrire un peu plus les aspects.
La solution recommandée par Apple est le HTTP Live Streaming. Elle offre la possibilité d’utiliser des serveurs HTTP (par exemple Apache) afin de diffuser la vidéo. Le player appelle dans un premier temps un fichier m3u8. Ce fichier est un fichier de metadata, une playlist comme celle-ci :
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000
http://media.example.com/64kb.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=276000
http://media.example.com/276kb.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=420000
http://media.example.com/420kb.ts
#EXT-X-ENDLIST
On remarquera tout particulièrement l’élément BANDWITH, il permet de définir le nombre de bits par seconde. Cela permet au player de gérer suivant le réseau quel playlist il va utiliser : en Edge par exemple, le player choisira le fichier 64kb.m3u8. Ce second fichier sera du même format mais contiendra des morceaux de vidéos : des fichiers .ts à lire à la suite les uns des autres. Le player pourra au besoin changer de playlist suivant le débit. Côté encodage, on utilise l’encodage H.264 pour la vidéo et HE-AAC pour l’audio.
Tout ceci est cependant la recommandation d’Apple (cf Guidelines), il est tout à fait possible de lire du MP4 encodé en H.264, il faut juste limité le temps des vidéos à 10min maximum. Dans tous les cas, en utilisant de bons outils d’encodages, la qualité sera au rendez vous et donc la satisfaction des utilisateurs aussi. On pourra par exemple utilisé soit des outils comme ffmpeg, ceux d’Apple; dans le cas d’entreprise, il est également possible d’utiliser de gros serveurs dédié à l’encodage comme ceux d’Inlet Technologies.
Je terminerais par ce lien permettant d’avoir la note technique d’Apple quand à la création et au déploiement du HTTP Live Streaming sur iPhone et iPad