|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 17.01.2006, 17:19 Titel: AVI´sS abspielen |
|
|
Wie Spiele ich Avis ab?
habe bisher nur den code anbei gefunden.
Der Ruckelt sich aber nen Ast ab. Vorallem wenn man hochauflösende
Videos so 1280-1024 bis 1600x1200 abspielt ( Was mit winamp
oder anderen playern übrigens kein problem ist ).
Außerdem habe ich vor das in einem spiel zu verwenden in dem
ich mit direct x sprites darstelle, zwar nicht gleichzeitig aber
in direkter abfolge ( video - spielgrafik element - video usw )
kann ich das irgendwie umsetzen? gibt es direktX avi abspiel
funktionen?
grüße,
und schonmal danke für alle infos
Rayjunx
Code: |
#include <windows.h>
#pragma comment(lib,"winmm.lib") //für MSV C++
int main()
{
mciSendString("open file.mp3", NULL, 0, NULL);
mciSendString("play file.mp3 wait", NULL, 0, NULL);
mciSendString("close file.mp3", NULL, 0, NULL);
return 0;
}
|
_________________ Just a Freak |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 17.01.2006, 17:22 Titel: |
|
|
DirectShow kann dir wahrscheinlich helfen. _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 17.01.2006, 17:49 Titel: |
|
|
PeaceKiller
DirectShow wird wegoptimiert von Microsoft da es ein Reinfall war.
RayJunx
Ich würde nicht mit der MCI Kommandoumgebung arbeiten sondern mit den MCI Kommandoobjekten. Weitere Infos findest Du dazu in der MSDN.
Nebenbei: Irgendwie habe ich momentan das Gefühl Du fragst sehr viel, was Deinen Wissenstand noch nicht entsprechen dürfte. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 17.01.2006, 18:04 Titel: |
|
|
Was kann man dann von DX benützten um z.B. Videos auf Texturen zu klatschen? _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 17.01.2006, 18:08 Titel: |
|
|
PeaceKiller
MCI, DirectDraw. Nebenbei: Microsoft empfiehlt keine Videos auf Texturen zu "Klatschen", da Texturen dafür nicht konzipiert sind. Man kann sie dafür modifizieren, aber Fakt ist: Sie wurden dafür von Grund auf nie ausgelegt. und selbst Microsoft musste daraus erbittert lernen. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 08.03.2006, 16:17 Titel: MCI Kommandoobjekten? |
|
|
MCI Kommandoobjekte? whats that...
kann mir jemand nur nen groben overview geben um was es da geht?
ich versteh erstmal bahnhoff leider
gruß und danke
rayjunx _________________ Just a Freak |
|
Nach oben |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 08.03.2006, 16:26 Titel: Re: MCI Kommandoobjekten? |
|
|
RayJunx hat Folgendes geschrieben: | MCI Kommandoobjekte? whats that...
kann mir jemand nur nen groben overview geben um was es da geht?
ich versteh erstmal bahnhoff leider
gruß und danke
rayjunx |
Das könnte dich interessieren: http://www.c-plusplus.de/forum/viewtopic-var-p-is-284792.html
Nebenbei, die Mehrzahl von AVI ist nicht AVI´s sondern AVIs. Du schreibst doch auch nicht CD´s oder Teddy´s sondern CDs oder Teddys (obwohl im englischen die Mehrzahl Teddies ist ). *klugscheiß* _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 08.03.2006, 17:01 Titel: |
|
|
Bei MCI-Kommandoobjekten benutzt du nicht eine "konsolenartige" Parameterübergabe, sondern sprichst die Elemente direkt an. So kannst du z.B. ein Video in einem vorher erstellten Fenster abspielen. Natürlich werden hier wie bei der Win32API auch laufend Nachrichten gesendet, die du abfangen und auswerten kannst.
Die MSDN sollte auch weiterhelfen _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 13.03.2006, 19:06 Titel: weitere anhaltspunkte |
|
|
Hi all,
habe eben den link weiter oben getestet und dort ein gutes beispiel gefunden. ich konnte das beispiel auch verwenden nur habe ich dann
ein problem. hier meine beschreibung des problemes das ich so auch
mal an den autor des code-beitrages weiter unten gemailt habe,
hoffe jemand weiß vielleicht um eine einfache lösung:
Bräuchte deine hilfe wegen „avi per mci „ abspielen
Du hattest da mal was in einem forum gepostet und der code geht auch,
aber sobald ich mein spiel vom fenster in den vollbildmodus schalte schmirgelt
er mir ab.
Hier noch mal der link von deinem beispiel:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-39401.html
ich greife in meinem prog mit directdraw auf das bild zu, wenn ich
diese aufrufe aber nicht verwende die ich in eine art: begin und endszene
funktion gekapselt habe, dann kann ich zwischendurch schön ein video
abspielen mit deiner funktion. Aber wie gesagt nur solange ich das
windowsfenster meines programmes NICHT im vollbildmodus starte.
Ändere ich den entsprechenden parameter hingehend um das er im
Vollbildmodus startet geht das abspielen des videos nicht, und auch
Das Stoppen führt nicht in mein prog. Zurück.
Das Spielchen das ich programmiert habe ist im prinzip aufgebaut
Wie die Sprite-übungsbeispiele aus dem JLI Buch, weiß nicht ob dir
Das was sagt.
Ich poste dieses problem auch auf der entsprechenden seite...
Hier der code:
Code: | Ich wollt das hier mal für die FAQ vorschlagen..
Hab mal etwas rumgebastelt und nen mini-avi-player mit mci gebastelt.
der kann nichts weiter als abspielen und anhalten, ist aber dafür schön einzubauen.
zu includieren sind - wie in geeky's mp3-player die windows.h und mmsystem.h
die Lib winmm.lib wird auch benötigt:
C/C++ Code:
int myPlayAvi (HWND hWnd, char *filename, int loop)
{
char cmd[300];
wsprintf(cmd, "open \"%s\" alias mympeg type MPEGVideo style child", filename);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht öffnen!", "Fehler", 0);
return -1;
}
wsprintf(cmd, "window mympeg handle %lu", hWnd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
wsprintf(cmd, "MCI-Error: Kann window handle %ld nicht setzen", hWnd);
MessageBox(NULL, cmd, "Fehler", 0);
return -1;
}
wsprintf(cmd, "play mympeg from 0");
if (loop) wsprintf(cmd, "%s repeat", cmd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht absielen!", "Fehler", 0);
return -1;
}
return 0;
}
int myStopAvi (void)
{
char cmd[300];
wsprintf(cmd, "close mympeg");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht schließen!", "Fehler", 0);
return -1;
}
return 0;
}
C/C++ Code:
int myPlayAvi (HWND hWnd, char *filename, int loop)
{
char cmd[300];
wsprintf(cmd, "open \"%s\" alias mympeg type MPEGVideo style child", filename);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht öffnen!", "Fehler", 0);
return -1;
}
wsprintf(cmd, "window mympeg handle %lu", hWnd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
wsprintf(cmd, "MCI-Error: Kann window handle %ld nicht setzen", hWnd);
MessageBox(NULL, cmd, "Fehler", 0);
return -1;
}
wsprintf(cmd, "play mympeg from 0");
if (loop) wsprintf(cmd, "%s repeat", cmd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht absielen!", "Fehler", 0);
return -1;
}
return 0;
}
int myStopAvi (void)
{
char cmd[300];
wsprintf(cmd, "close mympeg");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht schließen!", "Fehler", 0);
return -1;
}
return 0;
}
C/C++ Code:
int myPlayAvi (HWND hWnd, char *filename, int loop)
{
char cmd[300];
wsprintf(cmd, "open \"%s\" alias mympeg type MPEGVideo style child", filename);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht öffnen!", "Fehler", 0);
return -1;
}
wsprintf(cmd, "window mympeg handle %lu", hWnd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
wsprintf(cmd, "MCI-Error: Kann window handle %ld nicht setzen", hWnd);
MessageBox(NULL, cmd, "Fehler", 0);
return -1;
}
wsprintf(cmd, "play mympeg from 0");
if (loop) wsprintf(cmd, "%s repeat", cmd);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht absielen!", "Fehler", 0);
return -1;
}
return 0;
}
int myStopAvi (void)
{
char cmd[300];
wsprintf(cmd, "close mympeg");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
MessageBox(NULL, "MCI-Error: Kann Datei nicht schließen!", "Fehler", 0);
return -1;
}
return 0;
}
Sämtliche Codecs, die installiert sind, kann er theoretisch abspielen - sogar mit sound ;)
Als handle könnt ihr das Hauptfenster oder was auch immer eingeben. Für Spiele ist evtl noch interessant, dass man bei play auch den Parameter Fullscreen in den cmd-string setzen kann.
Laut M$ funktioniert das unter Win ab 95, bzw. NT aufwärts.
cYa
DjR
|
_________________ Just a Freak |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 13.03.2006, 19:21 Titel: |
|
|
Söllt man das nicht für die faq mit wchar_t machen weil das Beispiel hab ich auch genommen und so funzt es mit VC++ 2005 nicht und die die noch normal char proggen sollen es halt sich umschreiben aber die faq ist doch eher für anfänger da und du söllt man nicht mit nicht mehr zukunftssicherem zeug fütter(nichts gegen ASCII aber Asien ist halt auch noch da!!).
mfg fast_hawk _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 13.03.2006, 19:39 Titel: |
|
|
Ich weiß nicht wann du das abspielst (vieleicht als intro?). Du solltest vieleicht Direct3D erst nachdem das Video angezeigt wurde initialisieren. _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
Jones Senior JLI'ler
Alter: 33 Anmeldedatum: 03.03.2005 Beiträge: 208 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 13.03.2006, 20:20 Titel: |
|
|
fast hawk
man kann beim VS 2005 einstellen ob man Unicode benutzen möchte oder nicht
Project -> Properties -> General -> Character Set |
|
Nach oben |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 13.03.2006, 20:49 Titel: nicht nur intro |
|
|
leider nicht "nur" als intro,
ich will also immer wieder zwischendurch sequenzen zeigen.
wie mach ich das im vollbildmodus wenn ich primär das
selbe vollbild für die spielgrafik anzapfe?
gruß
rayjunx _________________ Just a Freak |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 13.03.2006, 21:08 Titel: |
|
|
Ahoi, schau mal hier ob es dsa ist was du suchst:
http://www.programmersheaven.com/2/FAQ-DIRECTX-Play-Video-File(MPEG-and-AVI) _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|