2010-11-24 10 views
7

Ich habe ein Formular mit einem Live-View des TV-Signals (von DVB-T Stick). Ich habe das Beispielprojekt "DTViewer" von http://directshownet.sourceforge.net/about.html. Jetzt versuche ich, den Stream in eine Filmdatei aufzunehmen, indem ich auf eine Schaltfläche klicke, aber wie? Ich benutze C# und DirectShow.NET.Capture einen DVB-T Stream zu einer Film-Datei

Ich habe versucht, in vielen Sampleprojcets zu suchen, aber diese sind für Videoeingänge nicht ein DVB-T-Stick mit einem BDA (Broadcast Driver Architecture) Schnittstelle gemacht.

Hilfe!

+0

Wie wird das Diagramm erstellt? – leppie

+0

Ich habe das Beispielprojekt von http://directshownet.sourceforge.net. das Projekt DTViewer. Das Diagramm enthält einen MPEG-2 Demultiplexer Filter, um den Stream anzuzeigen ... – martinhodler

Antwort

3

Ich weiß nicht genau, was genau Sie mit einer "Filmdatei" meinen, aber ich kann Ihnen sagen, wie Sie den gesamten MUX (Transportstrom) erfassen können.

Erstellen Sie eine Grafik mit einem Microsoft DVBT Network Provider, You_Name_It BDA DVBT-Tuner, You_Name_It BDA digitale Erfassung und MPEG-2 Demultiplexer Filter.
Sobald Sie sie angeschlossen haben, zählen Sie alle Ausgangspins auf dem MPEG-2-Demultiplexer auf und rendern Sie sie. Stellen Sie die Frequenz Ihrer Wahl ein (put_TuneRequest).

An diesem Punkt ist alles bereit, um das Diagramm zu starten, aber führen Sie es nicht aus!
Listen Sie alle Filter im Diagramm auf. Trennen Sie alle Filter außer Microsoft DVBT-Netzwerkanbieter, You_Name_It BDA DVBT-Tuner und You_Name_It BDA Digital Capture.

Entfernen Sie alle diese getrennten Filter aus dem Diagramm mit Ausnahme des MPEG-2-Demultiplexers (er muss in der Grafik sein, obwohl er nicht angeschlossen ist). Hinzufügen Sample Grabber Filter und NULL Renderer Filter. Verbinden Sie Digital Capture Filter zu Sample Grabber und Sample Grabber zu NULL Renderer. Sie können das Diagramm jetzt ausführen.Durch den Callback im Sample Grabber Filter erhalten Sie den gesamten MUX. Natürlich gibt es noch etwas Arbeit, um die Daten zu demuxen, aber sobald Sie das tun, können Sie alle TV-Programme in einem MUX auf einmal erfassen. Der einfachste Weg besteht darin, es in einem TS-Format zu erfassen, da der TS gesendet wird (188 Bytes lange Pakete).

+0

Danke! Und mit einer Filmdatei meine ich eine Datei wie AVI, WMV oder MPEG. – martinhodler

+0

Sie sind willkommen :-) Inside TS ist ein MPEG2 oder MPEG4, also sollten Sie in der Lage sein, eine AVI oder MPEG Datei ohne erneute Komprimierung zu erstellen (kein Qualitätsverlust) . Für WMV müssen Sie das MPEG dekomprimieren und mit einem WMV-Encoder erneut codieren. –

+0

Haben Sie einen Beispielcode dafür? – martinhodler

2

Es scheint mir VLC hat BDA-Unterstützung (BDA.c file reference), vielleicht können Sie etwas aus ihrem Code schnüffeln?

+0

Ich schreibe das Werkzeug in C# ... Ich brauche einen Wrapper (P/Invoke) existiert keine Bibliothek für .NET? aber es ist ein guter Hinweis. – martinhodler

1

Es gibt keine einfache Antwort auf Ihre Frage. Ich habe ein solches Projekt gestartet und herausgefunden, dass es sehr wenig darüber gibt, also hier ist etwas von meiner Forschung.

Zunächst müssen Sie verstehen, dass DVB-T-Tuner-Karte oder Stick gibt keine Video-Frames im klassischen Sinne, aber die Decodierung erfolgt im PC, auf der CPU. Eine externe Karte liefert Ihnen nur komprimierte Daten, wie sie aus der Luft abgerufen werden.

Weiter - die an Sie gelieferten Daten werden im MPEG2- oder MPEG4-Transport Stream-Format vorliegen. Welches ist geeignet für Streaming oder Broadcasting, nicht zum Speichern in Datei. VLC kann TS abspielen, das in die Datei geschrieben wurde, aber um eine richtige Videodatei aufzunehmen, müssen Sie die Datei entweder umcodieren oder in den Programm-Stream umpacken. Google ein wenig, Sie werden die Unterschiede finden.

Mehr - eine Frequenz in der Luft besteht aus vielen Kanälen, und diese Kanalpackung wird "Mux" genannt. Also - vom BDA Tuner/Capturer erhalten Sie ALLE Daten, und Sie müssen es manuell demuxen oder BDA demuxer tun lassen.

Hoffe, das ist genug Info, um Sie zu beginnen, kann ich Ihnen einige interessante Links, wenn ich auf die echte Tastatur zu bekommen.