Просмотр видеороликов и анимации
Компонент MediaPlayer, значок которого находится на вкладке System(на рисунке, позволяет воспроизводить видеоролики, звук и сопровождаемую звуком анимацию.

В результате добавления к форме компонента MediaPlayer на форме появляется группа кнопок, подобных тем, которые можно видеть на обычном аудио- или видеоплеере. Назначение этих кнопок пояснено в таблице. Свойства компонента MediaPlayer приведены в следующей таблице.

Кнопки компонента MediaPlayer
Кнопка | Обозначение | Действие |
Воспроизведение | btPlay | Воспроизведение звука или видео |
Пауза | btPause | Приостановка воспроизведения |
Стоп | btStop | Остановка воспроизведения |
Следующий | btNext | Переход к следующему кадру |
Предыдущий | btPrev | Переход к предыдущему кадру |
Шаг | btStep | Переход к следующему звуковому фрагменту, например, к следующей песне на CD |
Назад | btBack | Переход к предыдущему звуковому фрагменту, например, к предыдущей песне на CD |
Запись | btRecord | Запись |
Открыть/Закрыть | btEject | Открытие или закрытие CD-дисковода компьютера |
Свойства компонента MediaPiayer
Свойство | Описание |
Name | Имя компонента. Используется для доступа к свойствам компонента и управлением работой плеера |
DeviceType | Тип устройства. Определяет конкретное устройство, которое представляет собой компонент MediaPiayer. Тип устройства задается именованной константой: dtAutoSelect - тип устройства определяется автоматически; dtVaweAudio - проигрыватель звука; dtAVivideo - видеопроигрыватель; dtCDAudio - CD- проигрыватель |
FileName | Имя файла, в котором находится воспроизводимый звуковой фрагмент или видеоролик |
AutoOpen | Признак автоматического открытия сразу после запуска программы, файла видеоролика или звукового фрагмента |
Display | Определяет компонент, на поверхности которого воспроизводится видеоролик (обычно в качестве экрана для отображения видео используют компонент Panel) |
VisibleButtons | Составное свойство. Определяет видимые кнопки компонента. Позволяет сделать невидимыми некоторые кнопки |
Просмотр видеороликов и анимации
Помимо воспроизведения звука, компонент MediaPiayer позволяет просматривать видеоролики и мультипликации, представленные как AVI-файлы (AVI - это сокращение от Audio Video Interleave, что переводится как чередование звука и видео, т. е. AVI-файл содержит как звуковую, так и видеоинформацию) .
Процесс использования компонента MediaPiaer для посмотра содержимого AVI-файла рассмотрим на примере программы, которая в результате щелчка на командной кнопке воспроизводит на поверхности формы простую сопровождаемую звуковым эффектом мультипликацию - вращающееся по часовой стрелке слово Delphi.
Вид диалогового окна программы приведен на рисунке, а значения свойств компонента MediaPlayerl - В таблице.


Свойства компонента MediaPiayer
Свойство | Описание |
Name | MediaPlayer1 |
FileName | delphi.avi |
DeviceType | dtAVIVideo |
AutoOpen | True |
Display | Panel1 |
Visible | False |
Создается форма приложения обычным образом. Компонент Paneii используется в качестве экрана, на который осуществляется вывод анимации, и его имя принимается в качестве значения свойства Display компонента MediaPlayeri. Поэтому сначала к форме лучше добавить компонент Panel и затем - MediaPlayer. Такой порядок создания формы позволяет установить значение свойства Display путем выбора из списка.
Следует особо обратить внимание на то, что размер области вывода анимации на панели определяется не значениями свойств width и Height панели (хотя их значения должны быть как минимум такими же, как ширина и высота анимации). Размер области определяется значением свойства.
DisplayRect компонента MediaPlayer. Свойство DisplayRect ВО время разработки программы недоступно (его значение не выводится в окне Object Inspector). Поэтому значение свойства DisplayRect устанавливается во время работы программы в результате выполнения инструкции:
MediaPlayer1.DisplayReet:=Rect(0,0,60,60)
Текст программы приведен ниже:
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; // информационное сообщение Panel1: TPanel; // панель, на которую выводится анимация Button1: TButton; // кнопка OK MediaPlayer1: TMediaPlayer; // универсальный проигрыватель procedure ButtonlClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations ) public { Public declarations } end; var Form1: TForm1 ; implementation ($R *.DFM} procedure TForm1.ButtonlClick(Sender: TObject); begin MediaPlayer1.Play; // воспроизведение анимации end; procedure TForm1.FormCreate(Sender: TObject); begin // зададим размер области вывода анимации // на поверхности формы MediaPlayer1.DisplayRect:=Rect(0,0,60,60); end; end.
Процесс воспроизведения анимации активизируется применением метода Play, что эквивалентно нажатию кнопки Play в случае, если кнопки компонента MediaPlayer доступны пользователю.
Оставить комментарий
Комментарии


я уже не говорю о том, что работает только с несколькими кодеками...
более лучший способ воспроизведения видеороликов и mp3 музыки- использование след. модуля (к сожалению на помню ни автора, ни его сайта :( ), однако и у него не все так хорошо - бальшое минус в том, что он не чистит за собой ресурсы :(
mp3.h:
// MP3.h
#ifndef MP3_H
#define MP3_H
#include <windows.h>
#include <mmsystem.h>
#include <amstream.h>
#include <control.h>
#include <uuids.h>
class Mp3
{
private:
IBaseFilter * pif;
IGraphBuilder * pigb;
IMediaControl * pimc;
IMediaEventEx * pimex;
bool ready;
public:
Mp3();
~Mp3();
void Load(LPSTR filename);
void Cleanup();
void Play();
void Pause();
void Stop();
};
#endif
/////////////////////////
// MP3.cpp
#include "Mp3.h"
Mp3::Mp3()
{
pif = NULL;
pigb = NULL;
pimc = NULL;
pimex = NULL;
ready = false;
CoInitialize(NULL);
}
Mp3::~Mp3()
{
CoUninitialize();
if (pimc) pimc->Stop();
if(pif)
{
pif->Release();
pif = NULL;
}
if(pigb)
{
pigb->Release();
pigb = NULL;
}
if(pimc)
{
pimc->Release();
pimc = NULL;
}
if(pimex)
{
pimex->Release();
pimex = NULL;
}
}
void Mp3::Load(LPSTR szFile)
{
WCHAR wFile[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, szFile, -1, wFile, MAX_PATH);
if (SUCCEEDED(CoCreateInstance( CLSID_FilterGraph,
NULL,
CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,
(void **)&this->pigb)))
{
pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
// pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
if (SUCCEEDED(pigb->RenderFile(wFile, NULL))) ready = true;
}
}
void Mp3::Play()
{
if (ready)
{
pimc->Run();
}
}
void Mp3::Pause()
{
if (ready)
{
pimc->Pause();
}
}
void Mp3::Stop()
{
if (ready)
{
try{pimc->Stop();}catch(...){}
}
}
void Mp3::Cleanup()
{
if (pimc) pimc->Stop();
// Release all remaining pointers
delete pimex;
delete pif;
delete pimc;
delete pigb;
// Clean up COM
CoUninitialize();
return;
};