human
h.264 C'est le meilleur article sur /r/technology en ce moment, mais je n'arrive pas à trouver une explication simple de sa fonction, et pourquoi c'est si important. Explique comme si j'avais cinq ans.
gpt
Je pourrais entrer un peu plus dans les détails , si quelqu'un est intéressé . * * Une introduction rapide au codage vidéo * * : La vidéo " brute " est une séquence d' images brutes . Une image brute est ce que le capteur de la caméra génère. Généralement, un capteur de caméra utiliserait entre 1 et 4 octets pour stocker/transmettre un seul pixel. Ainsi, une image 1080p serait par ex. prendre 1920x1080x2 octets. À 30 images ( images ) par seconde , ce serait un _ bit _ rate de 1920x1080x2x30x8 bits par seconde . C'est ~1 Gbit/s . Personne n'a (encore) ce genre de bande passante. Le codage vidéo permet de réduire l'espace nécessaire pour stocker la vidéo. Ainsi, notre exemple de capteur générerait toujours ~ 1 Gbps , mais je _ encoderais _ la vidéo et la réduirais à quelque chose de beaucoup moins. Celle-ci est transmise/stockée, _ décodée _ puis affichée. C'est ce que font TOUS les codecs. Cependant , différents codecs ont des fonctionnalités différentes . Presque TOUS les codecs grand public populaires utilisent des techniques de codage dites « avec perte ». Cela signifie que la vidéo décodée _ perd _ certaines informations relatives à la vidéo d'origine. Souvent, la perte est perceptible (URL_0), mais un bon codec tente de minimiser la perte. ( NB : des codecs sans perte existent , et sont souvent utilisés dans des applications où il y a un besoin légal de ne PAS avoir de pertes . par exemple médical , application de la loi , etc . ) * * Histoire / Exemples * * * MJPEG - comme son nom l' indique , est mouvement JPEG. Il compresse chaque image de la séquence indépendamment en tant qu'image JPEG. Celles-ci sont parfois appelées « trames Intra ». * Conçu par MPEG1 à la fin des années 80 / début des années 90 . Il a été l'un des premiers à standardiser le codage « inter-frame ». Ceci est essentiel et permet d'économiser beaucoup d'espace. Dans une vidéo typique, il n'y a pas trop de différence d'une image à l'autre (pensez-y, il n'y a pas beaucoup de mouvement en 1/30e de seconde à moins que vous n'enregistriez The Flash). Le codage inter - trames est une technique où les encodeurs doivent stocker « juste » la différence entre les trames * H263 -- Le prédécesseur de H264 et conçu au milieu des années 90 . Également maintenu par la même organisation que H264 ( ITU - T ) , fonctionnalités ajoutées comme un filtre de déblocage ( où le " blocage " dû aux pertes de compression pourrait être réduit ) , des résolutions plus grandes , etc . La normalisation est importante pour permettre l'interopérabilité. Cependant , les standards vidéo ne standardisent pas vraiment _ comment _ l' encodage doit être fait . Ils normalisent simplement l'apparence de la sortie de l'encodage. Cela laisse beaucoup de latitude aux implémenteurs d'algorithmes d'encodage pour trouver de meilleurs algorithmes, tout en laissant tout le monde lire la vidéo. En effet, des organisations comme l'UIT sont les gardiennes de l'intérêt plus large de l'interopérabilité, mais elles ne décident PAS de la qualité. * * H264 * * H264 , ratifié au début des années 2000 , était essentiellement une norme parapluie qui a pris toutes les avancées dans la recherche de sigproc de codage / décodage vidéo depuis la dernière itération et les a standardisées . Il a ajouté tout un tas de fonctionnalités vraiment étonnantes. Quelques exemples : * images de référence multiples - vous pouvez utiliser plusieurs images passées comme référence pour décrire l' image actuelle , permettant ainsi une meilleure compression * compensation de mouvement " sous - pixel " plus précise - afin que le mouvement puisse être mieux encodé * codage entropique - optimise les pixels vers le bas en " morceaux " en profitant des modèles statistiques de la vidéo Certaines de ces choses sont vraiment compliquées et vraiment cool . Cependant , des choses comme celle - ci impliquent beaucoup d' argent , et donc certains des bits algorithmiques de la norme H264 sont brevetés par diverses sociétés . Par exemple, Cisco a un brevet qui implique le bit de codage entropique ci-dessus. Ainsi , dans les pays qui respectent les brevets logiciels / algorithmes , de grandes parties de H264 sont brevetées . Une société appelée MPEG LA (sans lien réel avec MPEG) administre le pool. MPEG LA plaide activement les personnes qui implémentent H264 sans licencier les brevets. Ils facturent des redevances en fonction du nombre d'utilisateurs d'une implémentation particulière. * * WebRTC , Mozilla , Cisco , et al * * Grâce à tous les trucs funky ci - dessus , H264 est un codec vraiment génial pour les communications vidéo peer - to - peer ( haute qualité , faible bande passante , etc . ) . Les piles de communication H264 standard de l'industrie peuvent coûter des millions. À mesure que la consommation multimédia s'éloignait des applications autonomes vers le Web et les navigateurs, la prise en charge des navigateurs pour les codecs vidéo est devenue critique. En 2011 (?), Google a publié une pile de visioconférence gratuite et open source basée sur un navigateur appelée WebRTC "dans la nature". ( Le but de Google est toujours d' augmenter l' utilisation du Web de toutes les manières possibles , afin qu'ils puissent vendre des publicités et gagner de l' argent ) Cependant WebRTC ne pouvait pas utiliser H264 parce que les codecs Web devaient être ouverts , et personne ne voulait prendre le coup de payer pour H264 . C'est exactement ce qu'ont fait Cisco et Mozilla. Cisco a accepté d'accorder une licence H264 de MPEGLA et de le diffuser dans la nature tout en payant MPEGLA pour cela. Mozilla a accepté d'inclure H264 dans WebRTC maintenant qu'il est open source. Pour lier tout cela ensemble, intégrer H264 dans WebRTC signifierait que BEAUCOUP plus de personnes peuvent utiliser une vidéo de haute qualité dans le navigateur. Ainsi le tapage.