Encodage vidéo

Fermé
douta53 Messages postés 6 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 23 juillet 2015 - 23 juil. 2015 à 15:09
douta53 Messages postés 6 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 23 juillet 2015 - 23 juil. 2015 à 16:34
Bonjour,

Je souhaite écrire mon propre encodeur/décodeur vidéo de façon très simple, en C++.

L'objectif est d'avoir un flux vidéo en entrée, de l'encoder puis de le décoder pour avoir un autre flux vidéo en sortie. Et tout ça sans passer un autre encodage que le mien.

Le problème c'est que j'ai du mal à identifier les librairies qui peuvent par exemple extraire des image d'un flux sans les transcoder, et créer un flux à partir d'images sans les transcoder.

Pouvez-vous m'aider ?

Merci!

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 23/07/2015 à 15:30
'lut, pour faire un encodeur/décodeur il faut que tu aies des images en format brut, non encodées dans un format vidéo, à traiter. Le hic, c'est que sans nous dire quelle est la source, on ne peut pas t'indiquer quoi utiliser pour extraire les dites images...
Sur Windows, tu peux extraire les images affichées à l'écran avec DirectX je crois, et sortir des images d'une caméra via WMI.
Sous Linux, l'écran se capture via des API X11, et la caméra via V4L2...
Ce ne sont que des exemples. Et dans la plupart des cas, le format que tu obtiens est déjà compressé (JPEG), ou dans des formats légèrement exotiques (YrCrB, ...)
from human import idiocy
del idiocy
0
douta53 Messages postés 6 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 23 juillet 2015
23 juil. 2015 à 15:50
Merci pour ta réponse rapide.

Alors du coup l'objectif serait plutôt de partir d'images sources (par exemple, de format bmp), d'encoder ces images via un certain algorithme qui les stocke sous une certaine forme. (disons, un matrice)

Puis à partir des ces images encodées, j'aimerais pouvoir créer un flux vidéo (après un éventuel décodage de chaque image). Enfin, à partir du flux vidéo créé, il faudrait être en mesure d'extraire les images, de les ré-encoder et que la matrice soit alors identique pour chaque image avant/après.

j'espère que je suis clair....

J'ai par exemple utilisé Xuggler pour extraire mes images d'un flux, et recréer une vidéo à partir de ces images, mais il effectue un ré-encodage lors de la création de la vidéo et les images sont différentes.

merci
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228 > douta53 Messages postés 6 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 23 juillet 2015
23 juil. 2015 à 16:00
Ce que je ne comprends pas dans ta question en fait c'est le "flux" dont tu extrait tes images, c'est quoi? Ça semble être un flux de vidéo compressé, et si tu as utilisé cet exemple, alors les images sont stockées en PNG, compression sans perte, donc les images obtenues après extraction sont exactement les mêmes que celles contenues dans le flux, à savoir un peu différentes de l'original vu que le flux est compressé!

Mais du coup, quelle est ta question?
Si c'est "comment on lit les PNG", y'a plein d'exemples sur le net (utilisant libpng, stb_image, ...). Tu peux aussi extraire les images de ton flux dans un format non compressé (NetPBM/PGM, Truevision TGA, BMP).
Si c'est "comment on encode/décode", il existe des explications sur le fonctionnement des compressions et encodages sur le net, mais ce n'est pas un sujet facile, encore moins si tu encodes entre trames, ce qui est un peu le but d'un encodage vidéo.
0
douta53 Messages postés 6 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 23 juillet 2015
23 juil. 2015 à 16:34
Alors, ma question est la suivante :

Est-il possible de créer une vidéo à partir d'images, puis d'extraire ces images, sans AUCUNE perte d'information sur les images ?
0