Programmierkurs: Delphi: Multimediafunktionen

Aus Wikibooks

Multimedia[Bearbeiten]

Man kann unter Delphi sehr einfach multimediale Funktionen implementieren, indem man auf die Windows-API zugreift (Voraussetzung ist natürlich, dass man Windows nutzt). Das ist noch nicht nötig, wenn man ein Video abspielen möchte, wohl aber beim Schneiden. Oder etwa bei der Aufnahme von der Soundkarte und dem Abspeichern als Wave.

Zuerst muss man die Unit MMSystem in die Uses-Klausel aufnehmen. Diese bietet uns nun den Zugriff auf die entsprechenden API-Funktionen.

Tipp:

Was heißt "API"? API steht für Application programming interface, also "Schnittstelle zur Programmierung der Anwendung"


Aufnehmen eines Sounds[Bearbeiten]

Um einen Sound aufzunehmen, benötigen wir zum Beispiel schon die MMSystem-Unit (MultiMediaSystem). Wir benutzen immer die Funktion "mciSendString". Zuerst wollen wir einen neuen Bezeichner erstellen, vom Typ "waveaudio". Jedoch nicht als Delphi-Variable! Der entsprechende Code sieht folgendermaßen aus:

mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound', nil, 0, Handle);

Groß- / Kleinschreibung ist auch bei diesem String (genau genommen PChar) egal. Darauf folgt die Aufnahme:

mciSendString('RECORD mysound', nil, 0, Handle);

Möchte man vorher noch etwas an der Qualität feilen, müssen wir folgendes voranstellen:

mciSendString('SET mysound TIME FORMAT MS', nil, 0, Handle);
mciSendString('SET mysound BITSPERSAMPLE 16', nil, 0, Handle);
mciSendString('SET mysound CHANNELS 1', nil, 0, Handle);
mciSendString('SET mysound SAMPLESPERSEC 44000', nil, 0, Handle);
mciSendString('SET mysound BYTESPERSEC 88250', nil, 0, Handle);

Damit haben wir eine gute Qualität, nicht wie standardmäßig! Nun wird die Aufnahme (natürlich nicht direkt danach) gestoppt. Dazu wird folgendes verwendet:

mciSendString('STOP mysound', nil, 0, Handle);

Damit wird nicht nur die Aufnahme, sondern auch die Wiedergabe gestoppt. Die Wiedergabe erfolgt so:

mciSendString('PLAY mysound FROM 0', nil, 0, Handle);

Oder nur 2 Sekunden lang:

mciSendString('PLAY mysound FROM 0 TO 2000', nil, 0, Handle);

Die 2000 bezieht sich auf das Zeitformat, welches wir auf Millisekunden gestellt haben.

Öffnen eines Sounds / Videos[Bearbeiten]

Für den Sound genügt dazu ein einfacher Befehl:

mciSendString('OPEN sound.wav ALIAS mysound', nil, 0, Handle);

Danach kann er wie gezeigt abgespielt werden. Für das Video ist das Öffnen dasselbe, das Abspielen jedoch anders:

mciSendString(PChar(format('WINDOW mymovie HANDLE %d', [Panel1.Handle])), nil, 0, Handle);
mciSendString('PLAY mymovie FROM 0', nil, 0, Handle);

Bei Dateinamen mit Leerzeichen ist dieser in Gänsefüßchen einzuschließen!

Schneiden eines Sounds / Videos[Bearbeiten]

Auch das ist möglich! Mit einem einfachen Befehl:

mciSendString('DELETE mysound FROM 100 TO 1000', nil, 0, Handle);

Wichtig ist das Zeitformat!

Speichern[Bearbeiten]

Zuletzt noch das Speichern:

mciSendString('SAVE mysound sound.wav', nil, 0, Handle);

Bei einem Dateinamen mit Leerzeichen ist dieser in Gänsefüßchen einzuschließen!

TMediaPlayer[Bearbeiten]

In Delphi gibt es seit mindestens Delphi 3 die Komponente "TMediaPlayer". Diese kapselt so ziemlich alle diese Methoden und Zugriff in einer Komponente.

Standardmäßig hat diese Komponente eine visuelle Benutzerschnittstelle. Jedoch gerade wenn man seinen eigenen Media Player programmieren will, ist diese nicht wirklich erwünscht. Für dieses Problem stellt die Komponente die Eigenschaft "ButtonsVisible" zu Verfügung. Diese blendet die Steuerfläche aus, und man kann die Komponente weiter ansteuern.

Standardmäßig unterstützt diese Komponente die häufigsten Dateiformate wie *.mp3, *.wav und *.wma.


Komponentenentwicklung Inhaltsverzeichnis Programmierstil