Video aus dem Speicher abspielen
-
Sorry, jetzt sehe ich es...
Und der LPCSTR soll auf die Speicheradresse zeigen??? Was für ein Krampf...
-
Hi, können die Video-Abpsiel-Beispiele, denn auch die Videos vom Speicher abspielen ?
-
Wie gesagt, weiß ich nicht. Willst du die nicht von Platte abspielen???
-
Ja, ich würde die Dateien gerne direkt aus dem Speicehr abspielen wollen.
Wo kann ich mich denn da erkundigen, wie man das machen kann ?
Ich meien, wenn ihr es unbdingt realiersieren wolltet, wie würdet ihr vorgehen ?Gruß Nervenbündel !
P.S. Danke für eure Antworten.
-
Warum musst du die Dateien denn erst in den Speicher lesen??? Naja, im Zweifelsfall kannst du dir auch ein Tempfile machen und den Speicher da reinschreiben. Ist aber sehr langsam
-
Ja, das ist es ja gerade. Ich will einfach ne kleien Video datei in den Speicher laden und abspielen, das ist mit sound ja auch nicht schwer, mit video dürfte es dann auch ekein Probleme geben.

-
Immer mit der Ruhe
. DU brauchst den doch nicht selber in den SPeicher zu lesen. Das macht das Interface. Es reicht wenn du einen Pfad auf der Platte angibst...
-
Ich möchte doch aus dem Speicher abspielen.
Nicht von der HD (also ohne Pfad), sodnern einfach die BYTE Variable angeben können wo dasVideo drinsteckt und dann abpsielen.
So wie bei PlaySound.Weiß da jemand was ?
Ich bin schon halb am Verzweifeln.
Gruß Nervenbündel
-
So ohne weiteres geht das nicht. Beschäftige dich mal mit der MCI-Schnittstelle und sieh nach ob du dazu etwas findest. ICh sehe aber eigentlich relativ schwarz... Wofür brauchst du das eigentlich???
-
@MaSTaH
Naja, ich will es halt für ein Spiel nutzen.
Ist doch ganz praktisch.
Bist du dir sicher, dass es nicht geht ? Bei WAV dateien geht es doch auch.
Das dürfte doch kein Prblem sein.
-
Ja, aber warum soll das MCI es nicht in den Speicher laden. Brauchst dich dann doch garnicht darum zu kümmern, dass es in den Buffer kommt
-
Ich will dateien in den Speicehr laden können und dann nach belieben abspielen können.
-
@Nervenbündel: Du machst deinem Namen alle Ehre. Sei erstmal dankbar, dass MaSTaH dir überhaupt hilft. Außerdem: Wo liegt der Sinn, das File erst selber in den Speicher zu laden und dann irgendwie abzuspielen, wenn es für diesen Vorgang bereits ein Interface gibt?! Gib dich mit dem zufrieden, was MaSTaH dir gegeben hat und nerv nicht.
-
Wenn's interessiert (eigentlich ist er ja schon outdated
)char *lpData; // pointer auf buffer mit AVI!-Data
int fileSize; // dateigröße der AVI-DateiLRESULT CALLBACK IOProc(LPMMIOINFO lpMMIOInfo, UINT uMessage, LPARAM lParam1,
LPARAM lParam2);void main(void)
{
mmioInstallIOProc(mmioFOURCC('M','E','Y',' '),(LPMMIOPROC)
IOProc,MMIO_INSTALLPROC | MMIO_GLOBALPROC); // installiert eigene ioProcmyPlayAvi( WINDOWHANDLE, ".MEY+", 0); // extension MEY+ teilt MCI mit eigene ioProc aufzurufen
myStopAvi();
mmioInstallIOProc(mmioFOURCC('M', 'E', 'Y', ' '), NULL,
MMIO_REMOVEPROC); // deinstalliert eigene ioProc}
LRESULT CALLBACK IOProc(LPMMIOINFO lpMMIOInfo, UINT uMessage, LPARAM lParam1, LPARAM lParam2)
{ switch (uMessage)
{ case MMIOM_OPEN:
{ if (alreadyOpened) return 0;
alreadyOpened = true;
lpMMIOInfo->lDiskOffset = 0;
return 0;
}
case MMIOM_CLOSE: return 0;
case MMIOM_READ:
{ memcpy((void *)lParam1,lpData+lpMMIOInfo->lDiskOffset,lParam2);
lpMMIOInfo->lDiskOffset += lParam2;
return (lParam2);
}
case MMIOM_SEEK:
{ switch (lParam2)
{ case 0: lpMMIOInfo->lDiskOffset = lParam1; break;
case 1: lpMMIOInfo->lDiskOffset += lParam1; break;
case 2: lpMMIOInfo->lDiskOffset = fileSize - 1 - lParam1; break;
}
return lpMMIOInfo->lDiskOffset;
}
default: return -1;
}
}int myPlayAvi (HWND hWnd, char *filename, int loop)
{
char cmd[300];
// MPEGVideo geht nicht.... type AVIVideo!
wsprintf(cmd, "open \"%s\" alias mympeg type AVIVideo 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;
}Quelle:
MSDN : http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q155/3/60.asp&NoWebContent=1
thx 2 DocJunior's AVI-CodeSoweit ich festellen konnte, wird die eigene ioProc bloß beim type AVIVideo gecallt....
MPEGVideo hab ich nicht hinbekommen
ob type WAVAudio hab ich jetzt nicht getestetgruß nameless