2017-05-28 5 views
0

Notre application utilise C#/WinForms/VMR9/DirectShowLib-2005 soit pour lire un fichier vidéo local ou pour recevoir (et rendre) le flux vidéo en direct via udp en utilisant un filtre DirectShow tiers. Le flux vidéo utilise le codage H.265 et envoie des fichiers 1080p.C# Comment conserver le graphe du filtre DirectShow en cours de redimensionnement de la fenêtre vidéo, minimiser, appareil perdu, réinitialiser?

J'ai aussi ce filtre DirectShow enregistrant le flux vidéo en direct pour un fichier local pour moi. Lorsque je redimensionne le formulaire pendant la lecture vidéo ou la lecture de flux vidéo en direct, l'appareil est perdu et doit être réinitialisé. Je libère toutes les ressources, mais la réinitialisation de l'appareil échoue encore, sauf si je détruis aussi le graphique. Mais il est utilisé pour recevoir mon flux vidéo en direct et l'enregistrer.

Donc, le problème est que je voudrais garder le flux vidéo enregistré sans interruption par redimensionnement, passer à un autre moniteur, appareil perdu ou réinitialisé. Quelles sont mes options pour y parvenir? Nous pouvons envisager de convertir le code en WPF/WF, en achetant un logiciel disponible dans le commerce ou en utilisant un plugin gratuit pour faire le travail, etc. Besoin d'un conseil ici.

Deuxième question sur le même sujet, si je peux. Pendant que le flux en direct est enregistré dans un fichier local et que nous lisons ce flux en direct dans la fenêtre vidéo, nous affichons également une ligne temporelle (contrôle du curseur), représentant l'heure depuis le début du flux vidéo en direct jusqu'au moment présent (qui avance lorsque le flux en direct est actif). Je dois donner à l'utilisateur la possibilité de sélectionner n'importe quel moment précédent et de lire immédiatement cette partie de la vidéo enregistrée, tandis que le flux en direct est toujours enregistré dans le même fichier. Après avoir examiné une partie de la vidéo enregistrée, j'ai besoin de savoir comment laisser l'utilisateur continuer à regarder le flux en direct.

Je ne suis pas sûr de la technologie que nous devrions utiliser pour y parvenir également. J'apprécierais toute aide.

Merci beaucoup.

Répondre

0

Les graphiques de filtre d'enregistrement sont sensibles aux transitions d'état inattendues et supposent que l'enregistrement se fasse «immédiatement» sans interruption ni poursuite, notamment par nécessité de réinitialisation du matériel vidéo ou de changement de format.

La méthode typique consiste à séparer l'enregistrement de l'autre activité dans un graphique séparé. Un graphe d'enregistrement dédié recevrait les données produites à l'extérieur et les enregistrerait dans le fichier (ou stream to network). Les activités de lecture et de présentation s'exécutant dans un autre graphique peuvent être réinitialisées ou reconfigurées de manière flexible selon les besoins.

Voir aussi: