Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture vidéo image par image avec DirectShow

2 réponses
Avatar
Philippe Gremillet
Bonjour à tous !

Avant tout, merci de m'indiquer si ce message est hors groupe...

Je cherche à visualiser des vidéos avec DirectShow.
Attention : je ne cherche pas à faire d'affichage en continu, mais plutôt à
pouvoir visualiser une image de mon choix à un moment donné (à des fins de
traitement d'images).

J'ai utilisé la couche Vmr9 ("IVMRWindowlessControl9"), car elle contient
une méthode "GetCurrentImage" qui est bien commode pour récupérer le contenu
de l'image en cours de visualisation.

Mon problème est que, lorsque j'essaie de me déplacer dans la vidéo tout en
la visualisant (donc en faisant un "GetCurrentImage" à chaque image), je
n'ai su qu'utiliser "IMediaSeeking::SetPositions", avec l'image de début
égale à l'image de fin, toutes deux égales à l'image courante que je cherche
à visualiser, le graphe étant tout le temps en mode "Pause".
Ca marche convenablement, mais c'est très lent (à peine 4 Hz).
En fait, j'ai cherché à utiliser DirectShow car, n'utilisant que VFW
jusqu'ici, il existait certains fichiers AVI rétifs à l'utilisation au
travers de VFW. Notons que, en utilisant VFW image par image, j'obtiens des
cadences de visualisation tout à fait convenables (jusqu'à 60 Hz).

J'ai vaguement conscience que je n'utilise pas DirectShow dans le sens du
poil, que je le contrarie à vouloir faire de l'image par image. C'est
toutefois ce dont j'ai réellement besoin, et le fait que je ne puisse
charger certains fichiers AVI à l'aide de VFW est ma foi bien embêtant...

Votre aide est donc la bienvenue si vous avez d'heureuses suggestions à me
faire !!!

Cordialement,

Philippe Gremillet, développeur indépendant

2 réponses

Avatar
Christian ASTOR
On 7 sep, 16:35, "Philippe Gremillet" wrote:

Mon problème est que, lorsque j'essaie de me déplacer dans la vidéo tout en
la visualisant (donc en faisant un "GetCurrentImage" à chaque image), j e
n'ai su qu'utiliser "IMediaSeeking::SetPositions", avec l'image de débu t
égale à l'image de fin, toutes deux égales à l'image courante que je cherche
à visualiser, le graphe étant tout le temps en mode "Pause".
Ca marche convenablement, mais c'est très lent (à peine 4 Hz).



Avec IMediaPosition::get_CurrentPosition() -
IMediaPosition::put_CurrentPosition(), cela marche correctement (testé
sous XP avec une carte graphique très lente..)
Avatar
Philippe Gremillet
"Christian ASTOR" a écrit dans le message de
news:
On 7 sep, 16:35, "Philippe Gremillet" wrote:

Mon problème est que, lorsque j'essaie de me déplacer dans la vidéo tout
en
la visualisant (donc en faisant un "GetCurrentImage" à chaque image), je
n'ai su qu'utiliser "IMediaSeeking::SetPositions", avec l'image de début
égale à l'image de fin, toutes deux égales à l'image courante que je
cherche
à visualiser, le graphe étant tout le temps en mode "Pause".
Ca marche convenablement, mais c'est très lent (à peine 4 Hz).





Avec IMediaPosition::get_CurrentPosition() -
IMediaPosition::put_CurrentPosition(), cela marche correctement (testé
sous XP avec une carte graphique très lente..)



Merci de votre réponse ! En fait, j'avais déjà essayé, mais bof, pas
significativement plus rapide.
En revanche, je suis tombé par hasard sur "IMediaDet" : génial, impec ! Ca
fait juste ce que je voulais, c'est léger (pas de GraphBuilder à
construire), je peux maintenant lire des AVI qui étaient rétifs à VFW, à une
cadence tout à fait convenable (64 Hz pour du 720*576 pixels). Je tiens ça à
votre disposition si ça vous intéresse, ok ?

Encore merci de bien vouloir vous être penché sur mon problème !