En lisant sur la qualité vidéo, j'ai trouvé que cela dépend de la résolution, des images par seconde et du débit binaire, qui décide de la taille de la vidéo.
Ma question est de savoir comment le débit binaire est calculé et comment il peut différer.
Disons qu'une vidéo a une résolution de 360x240. Il faut 86400 pixels par image. La fréquence d'images est de 30 Hz. La vidéo prend donc 86400 × 30 = 2592000 pixels par seconde.
Supposons donc qu'un pixel soit 3 octets (24 bits) de données: nous avons 2592000 × 24 bits par seconde de vidéo (62208000 bits), soit 62208 kBits (cela ne semble pas correct, peut-être un problème dans mon calcul).
Mais comment peut-il différer et comment cela fait-il une différence de qualité?
video
codec
video-conversion
vincent mathew
la source
la source
Réponses:
Ce que vous avez calculé est le débit binaire d'une vidéo brute et non compressée. Vous ne les trouverez généralement que dans la recherche ou d'autres applications spécialisées. Même les diffuseurs utilisent la vidéo compressée, bien qu'à un débit binaire beaucoup plus élevé que votre vidéo YouTube typique.
Ainsi, la qualité vidéo a beaucoup à voir avec la façon dont la vidéo a été compressée. Plus vous le compressez, moins il faut de bits par trame. De plus, plus vous compressez, plus la qualité est mauvaise. Maintenant, certaines vidéos sont beaucoup plus faciles à compresser que d'autres - c'est essentiellement pourquoi elles ont un débit binaire inférieur même si elles ont la même résolution et la même fréquence d'images.
Afin de comprendre pourquoi c'est, vous devez être conscient des deux principes principaux utilisés par la compression vidéo. Celles-ci sont appelées "redondance spatiale" et "temporelle".
Redondance spatiale
La redondance spatiale existe dans les images qui montrent un contenu naturel. C'est la raison pour laquelle JPEG fonctionne si bien - il compresse les données d'image car des blocs de pixels peuvent être codés ensemble. Ce sont des pixels 8 × 8, par exemple. Ils sont appelés "macroblocs".
Les codecs vidéo modernes font de même: ils utilisent essentiellement des algorithmes similaires à JPEG afin de compresser une image, bloc par bloc. Ainsi, vous ne stockez plus de bits par pixel, mais des bits par macrobloc, car vous "résumez" les pixels en groupes plus importants. En les résumant, l'algorithme supprimera également les informations qui ne sont pas visibles à l'œil humain - c'est là que vous pouvez réduire la majeure partie du débit binaire. Cela fonctionne en quantifiant les données. Cela permettra de conserver des fréquences plus perceptibles et de «jeter» celles que nous ne pouvons pas voir. Le facteur de quantification est exprimé comme "QP" dans la plupart des codecs, et c'est le bouton de contrôle principal pour la qualité.
Vous pouvez maintenant même aller de l'avant et prévoir des macroblocs à partir de macroblocs qui ont été précédemment encodés dans la même image. C'est ce qu'on appelle la prédiction intra . Par exemple, une partie d'un mur gris était déjà codée dans le coin supérieur gauche du cadre, nous pouvons donc réutiliser ce macrobloc dans le même cadre, par exemple pour le macrobloc juste à côté. Nous allons simplement enregistrer la différence qu'elle avait avec la précédente et enregistrer les données. De cette façon, nous n'avons pas à coder deux macroblocs qui sont très similaires l'un à l'autre.
Pourquoi le débit change-t-il pour la même taille d'image? Eh bien, certaines images sont plus faciles à encoder que d'autres. Plus l'activité spatiale est élevée, plus vous devez réellement encoder. Les textures lisses prennent moins de bits que les textures détaillées. Il en va de même pour la prédiction intra: un cadre d'un mur gris vous permettra d'utiliser un macrobloc pour prédire tous les autres, alors qu'un cadre d'eau qui coule pourrait ne pas fonctionner aussi bien.
Redondance temporelle
Cela existe car un cadre suivant un autre cadre est probablement très similaire à son prédécesseur. Généralement, juste un tout petit peu de changements, et cela n'aurait aucun sens de l'encoder complètement. Les encodeurs vidéo ne font que coder la différence entre deux images suivantes, tout comme ils peuvent le faire pour les macroblocs.
Prenant un exemple de l'article de Wikipedia sur la compensation de mouvement , disons que c'est votre cadre d'origine:
Ensuite, la différence avec l'image suivante est la suivante:
L'encodeur ne stocke désormais que les différences réelles , pas les valeurs pixel par pixel. C'est pourquoi les bits utilisés pour chaque trame ne sont pas les mêmes à chaque fois. Ces trames de "différence" dépendent d'une trame entièrement codée, et c'est pourquoi il existe au moins deux types de trames pour les codecs modernes:
Vous devez parfois insérer des images I dans une vidéo. Le débit binaire réel dépend également du nombre de trames I utilisées. De plus, plus il y a de différence de mouvement entre deux images suivantes, plus l'encodeur doit stocker. Une vidéo de "rien" en mouvement sera plus facile à encoder qu'une vidéo de sport et utilisera moins de bits par image.
la source
Je crois que vos calculs sont en fait corrects, mais il y a un peu plus; la compression est le chaînon manquant ici.
Vous avez calculé le débit binaire non compressé et avez trouvé la raison pour laquelle la compression existe. Les débits binaires deviennent incroyablement élevés avec la vidéo non compressée. Ainsi, ils compressent la vidéo à la source et la décompressent au niveau du récepteur, puis le débit binaire devient gérable. Vous avez juste besoin d'un décompresseur assez rapide, qui peut être matériel ou logiciel.
Donc, le problème devient la quantité de compression qui peut être tolérée - ce n'est pas sans perte, généralement, donc vous perdez des informations, mais ils essaient de la rendre suffisamment intelligente pour perdre les données moins importantes qui ne seront pas si visibles. C'est généralement assez facile jusqu'à ce qu'il y ait beaucoup de mouvement, puis cela devient plus compliqué.
Edit: J'ai oublié d'ajouter, mais les parties qui implémentent la méthode de compression sont le codec; J'ai remarqué que vous l'utilisiez comme balise dans votre message.
la source