AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DirectShow vs VFW

Ein Thema von Aya · begonnen am 12. Mai 2006 · letzter Beitrag vom 30. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#1

DirectShow vs VFW

  Alt 12. Mai 2006, 21:59
Hi,

ich benutze z.Z. VFW (Video for Windows) um AVI Dateien abzuspielen... bin aber am überlegen auf DirectShow umzusteigen. Nur, ich hab KA ob das was ich vorhabe damit geht und ob es wirklich sinnvoll ist.

Also:

a) Ich möchte das Video nicht einfach auf einem Panel o.Ä. ausgeben sondern brauche jedes Frame einzeln als z.B. TBitmap.. mit vfw geht das wunderbar.. geht das mit DS auch??

b) Kann DS auch wmv etc abspielen?? Denn vfw kann leider nur AVIs...

Kann DirectShow die beiden dinge??

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: DirectShow vs VFW

  Alt 19. Mai 2006, 12:15
Hallo Aya,

da ich mich gerade selber durch die MSDN-Doku zu DirectShow quäle,
kann ich Dir sagen, daß Du damit jede Audio- bzw. Video-Datei
abspielen kannst für die es die entsprechenden Codecs auf Deinem
Rechner gibt.

DS ist beim Einsteigen ziemlich verwirrend (zumindest wenn man keine Ahnung von COM hat).
Einen Vorgeschmack bekommt man am besten wenn man sich mit dem Tool GraphEdit von Microsoft
beschäftigt. Laut Microsoft soll es im DirectX-SDK enthalten sein, was aber nicht der Fall ist.
Man findet es auch bei Microsoft im Web nicht.

Guggst Du hier: Download-Link zu Microsoft GraphEdit

-Erstmal entpacken...
-GraphEdit.exe starten
-File -> Render Media File... aus dem Menü auswählen
-Beliebige Mulimedia-Datei auswählen (DivX, MP3,...)
-Start-Button drücken

Das ganze Tool ist nichts weiter als eine grafische Oberfläche zu den DirectShow-Funktionen!


Das sollte für den Anfang reichen...
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#3

Re: DirectShow vs VFW

  Alt 19. Mai 2006, 16:44
Hi,

mhh.. ja ist schonmal hilfreich
Aber bevor ich mich da jetzt reinknie... geht es denn das ich einzelne Frames von Videos in irgendeinem format bekomme??
Bzw kenne ich DShow nur so bisher das man nen FensterHandle angibt in dem das Video dargestellt wird, aber das will ich ja nicht... ich will es einfach als RGB-Array oder TBitmap oder sonstwas.. geht das??

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: DirectShow vs VFW

  Alt 19. Mai 2006, 23:02
JA!

Um ein AVI-File in einzelnen Frames zu laden ist es am einfachsten den
Media Detector von DirectShow zu verwenden. Der erledigt viele lästige
Vorarbeiten um die man sich sonst kümmern müßte intern von selbst.

Weblink zu Microsoft MSDN: Grabbing a Poster Frame

Diese Funktion liefert Bitmaps ausschließlich im 24-Bit Format.
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#5

Re: DirectShow vs VFW

  Alt 20. Mai 2006, 15:05
Hi,

ok danke
Werd mir das ganze dann mal die tage genauer anschauen.

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#6

Re: DirectShow vs VFW

  Alt 22. Mai 2006, 18:45
Hi,

hab mir das ganze jetzt angeschaut und funktioniert auch soweit sehr gut, nur... das ganze ist bei mir viel langsamer als vfw..

Ich Öffne das ganze wie hier beschrieben:
Weblink zu Microsoft MSDN: Grabbing a Poster Frame

und benutze dann dashier:
pDet->GetBitmapBits(cFrame, nil, pBuffer, width, height);

um das aktuelle Frame in den Buffer zu bekommen... aber er schafft es nicht das video flüssig abzuspielen.. ne idee wieso?

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

Re: DirectShow vs VFW

  Alt 27. Mai 2006, 19:36
Die Funktion "Grabbing a Poster Frame" ist wohl eher dafür
gedacht gezielt einzelne Bilder aus einer Videodatei zu laden.

Warscheinlich wird dabei jedesmal die Position in der Datei neu
ermittelt, anstatt einfach nur die Folgeposition zu laden.

Wenn es Dir nicht um die (aufwendige) Bearbeitung der einzelnen Bilder
geht wobei die Ladezeit zu vernachlässigen wäre, sonder mehr um das
flüssige abspielen, ist es natürlich schneller die Bilder es aus einem
laufendem Stream abzugreifen. Dafür würde ich dann den SampleGrabber
benutzen. Der ist zwar nicht so einfach zu verwenden, aber man kann die
Einzelbilder im VideoStream abgreifen oder verändern bevor sie weiter
durch die Filterkette laufen. Hinter den SampleGrabber schaltet man
einen Standard Render-Filter zur Ausgabe der geänderten Bilder oder
einen NullRenderer-Filter wenn man die Bilder nicht anzeigen lassen möchte.
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#8

Re: DirectShow vs VFW

  Alt 27. Mai 2006, 19:39
Hi,

ich hab das mit dem SampleGrabber schon probiert.. klappt auch soweit, aber... ich hab bei dem ding nur die möglichkeit gefunden Play zu drücken und dann die daten abzufangen... Ich bräuchte mehr sowas wie getNextFrame().. also das der Stream pausiert ist und ich immer dann wann ich will das nächste frame bekomme

Geht das irgendwie?? Habe ich bisher keine möglichkeit für gefunden leider

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

Re: DirectShow vs VFW

  Alt 27. Mai 2006, 19:54
Wenn Du ein Video flüssig abspielen möchtest muß die Bearbeitung eines
Bildes bei z.B. 25fps natürlich in weniger als einer 1/25 abgeschlossen
sein - sonst ist es halt nicht mehr flüssig.

Wozu brauchst Du unbedingt eine GetNextFrame Funktion?
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#10

Re: DirectShow vs VFW

  Alt 27. Mai 2006, 20:02
Hi,

brauche das weil ich z.B. die Framerate selber bestimmen möchte.. also z.B. meinetwegen auch nur 10fps o.Ä.
Und ich brauche es um selber zu bestimmen wann welches frame kommt, um synchonität zwischen zwei videos hinzubekommen

Aya~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz