AnimatedControl - Converter
-
Was willst denn du? Was ist ein AnimatedControl und was sollen das für Anforderungen sein?
-
Hallo,
mit einem Animated Control kann man .AVI Dateien abspielen, jedoch nur mit den Bedingungen die im Startpost aufgezählt sind. Ansonsten funktioniert es nicht.
-
Das Ding heißt "animation control". Kannte ich nicht. Schaut uninteressant aus. Es gibt zig andere Möglichkeiten, Videos abzuspielen, ohne irgendwelche Einschränkungen. z.B. MCI oder DirectShow oder Media Foundation. Das einfachste wär evtl. MCI, da muss man wohl nicht viel mehr machen, als mit dem komischen Animation Control. DirectShow geht auch so, wenn du nur ein Video abspielen willst. Media Foundation hab ich mir noch nicht genau angeschaut, aber wenn ich micht erinnere, muss man sich da auch nicht so besonders auskennen, wenn man einfach nur ein Video abspielen will.
-
Dankeschön
Ich wusste nicht, dass es noch ander Bibliotheken gibt.
Ich verwende jetzt MCI und habe es schon kurz getestet.Kann man mit MCI auch das Video in meinem Fenster abspielen lassen?
-
Ja. Dem open Befehl kann man ein Fenster Handle mitgeben.
-
-
Hallo,
leider bekomme ich immer den Error per Messagebox: Es ist kein Treiber auf ihrem System installiert!
Hier mal der Code:
HWND m_vid = MCIWndCreate(hWndImage, GetModuleHandle(NULL), WS_CHILD | WS_VISIBLE| MCIWNDF_NOMENU| MCIWNDF_NOTIFYALL| MCIWNDF_NOPLAYBAR, "data\\test.avi"); char *command = "open \"data\\test.avi\" type mpegvideo alias test handle m_vid"; MCIERROR a = mciSendString(command, NULL, NULL, NULL); MCIERROR a_2 = mciSendString("play test", NULL, NULL, NULL);
-
"handle m_vid"? Weiß grad nicht, ob das Sinn macht...
Probiers einfach mit einem Dateinamen (aber mit einem absoluten, wie kommst du darauf, dass der relative in der Form funktionieren muss?), ohne weitere Angaben.
Ansonsten kann es natürlich sein, dass du noch die entsprechenden DirectShow Filter für das Format installieren musst. FFMpeg hat für die meisten wichtigen Formate DirectShow Filter.
-
Ich habe vergessen zu erwähnen, dass dieser Fehler nur auftritt, wenn ich MCIWndCreate aufrufe. Andernfalls gibt es keine Meldung.
Hier jetzt nochmal der derzeitige Code:
char *command = "open \"data\\test.avi\" type mpegvideo alias test"; MCIERROR a = mciSendString(command, NULL, NULL, NULL); MCIERROR a_2 = mciSendString("play test", NULL, NULL, NULL);
Dieser Funktioniert Fehlerfrei, auch mit dem relativen Pfad. Du hast jedoch geschrieben, dass ich dem open-Befehl ein Fenster Handle mitgeben kann. Wie würde dieser denn Aussehen?
MfG
-
Ist schon lang her, dass ich was damit gemacht habe. Ich hätt gedacht, das müsste eben mit MCIWndCreate funktionieren, vielleicht hast du da noch was falsch gemacht.
Es gibt auch einen window Befehl:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743882(v=vs.85).aspx
Müsste dann irgendwie so gehen:
window ALIAS handle HWND
Die großgeschriebenen Teile musst durch die entsprechenden Werte austauschen.
-
Unreg schrieb:
Ich wusste nicht, dass es noch ander Bibliotheken gibt.
Ich verwende jetzt MCI und habe es schon kurz getestet.Was willst du denn eigentlich machen? *
MCI ist halt schon reichlich alt - vielleicht gibt's ja eine neuere Technologie die ähnlich einfach zu verwenden ist.
*: Also was kann man sich unter "Video abspielen" vorstellen? Ein grosses Video so als "Video" halt, oder willst du zig/hunderte kurze und kleine Mini-Videos in einem Fenster abspielen (z.B. als animierte Buttons), oder ...?
-
Hallo,
@Mechanics:
Das habe ich auch schon vorher mal ausprobiert, jedoch Erfolgslos. Es wird einfach in einem neuen Fenster dargestellt. Als Error bekomme ich diesen hier zurück: MCIERR_BAD_CONSTANT@hustbaer
Also es sind nur kurze Videos, so ca. 10 Sekunden. Auch sind es nur maximal 10 Videos die auf einmal Dargestellt werden müssen. Die Videos sollten einfach auf das Fenster an einer bestimmten Position dargestellt und abgespielt werden, also auf keinem Button o.ä.
Deshalb wollte ich ursprünglich ja auch den AnimationControl verwenden.MfG
-
Unreg schrieb:
Als Error bekomme ich diesen hier zurück: MCIERR_BAD_CONSTANT
Das heißt halt, ein Parameter ist falsch. Sicher, dass du ein richtiges Handle richtig formatiert übergibst?
MCI ist natürlich schon sehr alt, aber grundsätzlich funktionieren muss es. Funktioniert z.B. immer noch problemlos im Irfan Viewer.
-
Ja, ich hab es mit dem erstellten Window versucht. Recht viel falsch machen kann man da doch nicht.
-
Poste einfach mal deinen kompletten Code, kann ja nicht so viel sein.
-
HWND m_vid = MCIWndCreate(hWndImage, GetModuleHandle(NULL), WS_CHILD | WS_VISIBLE| MCIWNDF_NOMENU| MCIWNDF_NOTIFYALL| MCIWNDF_NOPLAYBAR, "data\\test.avi"); char *command = "open \"data\\test.avi\" type mpegvideo alias test"; MCIERROR a = mciSendString(command, NULL, NULL, NULL); MCIERROR a_1 = mciSendString("window test handle m_vid", NULL, NULL, NULL); MCIERROR a_2 = mciSendString("play test", NULL, NULL, NULL);
-
Was soll Windows mit deinem Variablennamen anfangen können? Du musst schon den Wert der Variable in den String schreiben. Und ich glaub, für den window Befehl brauchst du MCIWndCreate nicht, bin mir jetzt aber nicht sicher.
-
@Unreg
Und muss es in C bzw. C++ implementiert sein?In C# klickst du dir in ein paar Minuten ne Form oder ein WCF-Fenster zusammen wo du in ein paar weiteren Minuten deine 10 Videos mit nem MediaPlayer Control drinnen laufen hast (je einem natürlich).
-
@Mechanics
Wenn ich das mit MCIWndCreate erstellte Fenster oder mein Main-Window verwende, bekomme ich wieder den BAD_CONSTANT Error.@hustbaer
Ja, es muss in C/C++ sein.Ich glaub es wird wirklich mal zeit auf eine andere API umzusteigen...
-
Ich hab das Gefühl, dass du immer noch was falsch machst. Du gibst doch anscheinend wirklich "m_vid" rein, und nicht den Wert davon.