2010-11-24 34 views
7

J'ai un formulaire avec une visualisation en direct du signal TV (à partir de dvb-t stick). J'ai l'exemple de projet "DTViewer" de http://directshownet.sourceforge.net/about.html. Maintenant, j'essaie de capturer le flux dans un fichier vidéo en cliquant sur un bouton, mais comment? J'utilise C# et DirectShow.NET.Capture d'un flux DVB-T dans un fichier vidéo

J'ai essayé de chercher dans de nombreux sampleprojcets mais ceux-ci sont faits pour videoinputs pas un bâton tnt avec une interface BDA (Broadcast Driver Architecture).

Aide!

+0

Comment le graphique est-il configuré? – leppie

+0

J'ai l'exemple de projet de http://directshownet.sourceforge.net. le projet DTViewer. Le graphique comprend un filtre démultiplexeur MPEG-2 pour afficher le flux ... – martinhodler

Répondre

3

Je ne sais pas vraiment ce que voulez-vous dire par un « film-fichier », mais je peux vous dire comment capturer l'ensemble MUX (flux de transport).

Créer un graphique avec un réseau Microsoft DVBT Fournisseur, You_Name_It BDA Tuner DVB-T, You_Name_It BDA Digital Capture & et filtres démultiplexeur MPEG-2.
Une fois que vous les connectez, énumérer toutes les broches de sortie sur le démultiplexeur MPEG-2 et les rendre. Réglez la fréquence de votre choix (put_TuneRequest).

À ce stade, tout est prêt pour exécuter le graphique, mais ne l'exécutez pas!
Énumérer tous les filtres dans le graphique. Déconnectez tous les filtres sauf Fournisseur réseau Microsoft DVBT, You_Name_It Tuner BDA DVBT et You_Name_It BDA Digital Capture.

Supprimer tous ces filtres déconnectés du graphique sauf le MPEG-2 Demultiplexer (il doit être dans le graphique même s'il n'est pas connecté). Ajouter Sample Grabber filtre et NULL Renderer filtre. Connectez Digital Capture filtre à Sample Grabber et Grabber Exemple-Renderer NULL. Vous pouvez exécuter le graphique maintenant.Grâce à la fonction de rappel dans le filtre Sample Grabber, vous recevrez le MUX entier. Bien sûr, il y a encore du travail pour démultiplier les données, mais une fois que vous faites cela, vous pouvez capturer tous les programmes TV dans un MUX à la fois. Le plus simple est de le capturer dans un format TS car le TS est diffusé (paquets de 188 octets).

+0

Merci! Et par un fichier film je veux dire un fichier comme AVI, WMV ou MPEG – martinhodler

+0

Vous êtes les bienvenus :-) Inside TS est un MPEG2 ou MPEG4, vous devriez donc être en mesure de créer un fichier AVI ou MPEG sans recompression (pas de perte de qualité) . Cependant, pour WMV, vous devrez décompresser le MPEG et le coder à nouveau avec un encodeur WMV. –

+0

Avez-vous des exemples de code pour cela? – martinhodler

2

Il me semble VLC supporte BDA (BDA.c file reference), peut-être vous pouvez fouiner quelque chose de leur code?

+0

J'écris l'outil en C# ... J'ai besoin d'un wrapper (P/Invoke) n'existe pas de bibliothèque pour .NET? mais c'est un bon indice. – martinhodler

1

Il n'y a pas de réponse simple à votre question. J'ai commencé un tel projet et j'ai découvert qu'il y avait très peu de choses que je connaissais à ce sujet, alors voici ma petite recherche. Tout d'abord, vous devez comprendre que la carte tuner dvb-t ou stick ne donne pas de cadres vidéo au sens classique, mais le décodage se fait dans le pc, sur le CPU. La carte externe ne vous fournira que des données compressées, car elle les récupère de l'air. Suivant: les données qui vous sont fournies seront au format MPEG2 ou MPEG4 Transport Stream. Ce qui est adapté pour le streaming ou la diffusion, pas pour enregistrer dans le fichier. VLC est capable de lire les TS écrits dans le fichier, mais pour enregistrer un fichier vidéo approprié, vous devrez soit transcoder le fichier, soit le réemballer dans le programme. Google un peu, vous trouverez les différences.

Plus d'une fréquence sur l'air se compose de beaucoup de canaux, et cette garniture de canal s'appelle 'mux'. Donc - à partir du tuner BDA/capturer vous obtiendrez TOUTES les données, et vous devrez démultiplier manuellement ou laisser démultiplicateur BDA le faire pour vous.

Espoir qui est assez d'informations pour vous aider à démarrer, je peux vous poster quelques liens intéressants quand je suis au clavier réel.