2010-11-27 9 views

Antwort

2

Meines Ansatz (was ich in der Produktion von VideoPhill recorder verwenden) war DirectShow.net zu verwenden nur für den Rahmen der Erfassung Dann benutze ich den SampleGrabber-Filter, um eine Reihe von Frames zu erstellen, die später in den Encoder eingespeist werden. Dafür verwende ich StandardMPEG.

Mein Wunsch war es, die meiste Zeit in der Verwaltung zu bleiben - und mit diesem Ansatz war ich in der Lage, dies zu tun.

Später - es scheint, es war der richtige Ansatz, denn jetzt kann ich verschiedene Encoder direkt an ein Aufnahmegerät anschließen. Und das war vorher nur möglich, wenn Sie SimulStream (tm) verwenden. Nicht nur das, Sie können auch Encoder verwenden, die nicht als DS-Filter verfügbar sind.

Über Probe Grabber (Fa DirectShow.net Ort - faq section):

Q9: Wo finde ich die Basisklassen? Wie schreibe ich einen Filter in C#?

Die Basisklassen wurden nicht übersetzt, um von .NET verwendet zu werden. Nach zwei Versuchen, nun, lassen Sie uns nur sagen, dass sie nicht mit verwaltetem Code entworfen wurden.

Das sagte jedoch, Sie haben immer noch Möglichkeiten. Zuallererst können Sie mit dem Sample-Grabber Video-Frames aufnehmen. Diese Rahmen können beliebig bearbeitet werden, bevor Sie mit dem nächsten Filter im Diagramm fortfahren. Sehen Sie sich das DxLogo-Beispiel (unter anderem) an, wie dies gemacht wird.

Zweitens können Sie ein DirectX Media Object (DMO) schreiben. In der lib sind zwei Beispiele enthalten, die zeigen, wie dies geschieht. Zwar gibt es Einschränkungen für DMOs, die reguläre Filter nicht haben, aber diese Einschränkungen sind für Sie möglicherweise kein Problem. Es gibt umfangreiche Dokumente (einschließlich einer CHM-Datei), die darüber sprechen, wie dies zu tun ist.

Drittens gibt es ein Beispiel namens GSSF. Sie können dies verwenden, wenn Sie einen Quellfilter erstellen möchten (dh den Filter im Diagramm, der den Stream generiert).

Verwandte Themen