Работа с файлами и мультимедиа


Download 361.5 Kb.
bet6/9
Sana20.10.2023
Hajmi361.5 Kb.
#1711567
TuriЛекции
1   2   3   4   5   6   7   8   9
Bog'liq
Работа с файлами и мультимедиа

Компонент MediaPlayer
Если для просмотра графических изображений используется обычный компонент Delphi, реализованный в самой VCL, то для просмотра или прослушивания мультимедийных данных используется системный компонент - MediaPlayer, расположенный на закладке System палитры компонентов. Суть системных компонент состоит в том, что практически все задачи по их работоспособности возлагаются на операционную систему, а в VCL лишь реализован простой интерфейс для доступа к функциям, предоставляемым ОС. В то же время, сам компонент MediaPlayer является обычным визуальным компонентом, основанным на TWinControl, а его "системность" проявляется лишь в виде функций, которые через его посредство реализуются.
Всего у этого компонента довольно много собственных свойств, что объясняется тем, что он, с одной стороны, предоставляет пользовательский интерфейс, а с другой - должен обеспечивать управление различными мультимедийными устройствами. Фактически, мы имеем дело с визуальным компонентом, обеспечивающим интерфейс и, одновременно, - с неким системным плеером. Список ряда свойств компонента MediaPlayer приведен в таблице15.2.

Таблица 15.2. Свойства компонента MediaPlayer

Свойство

Тип

Описание

AutoEnable

Boolean

Определяет, должен ли компонент автоматически делать доступными или недоступными свои кнопки

AutoOpen

Boolean

Определяет, должен ли плеер открываться автоматически при запуске приложения

AutoRewind

Boolean

Определяет, должен ли плеер переходить к началу записи перед следующим воспроизведением

ColoredButtons

TButtonSet

Определяет, какие из кнопок компонента должны быть цветными (по умолчанию все)

DeviceType

TMPDeviceTypes

Определяет тип мультимедийного устройства

Display

TWinControl

Определяет оконный элемент интерфейса для вывода изображения

DisplayRect

TRect

Определяет прямоугольную область для вывода изображения

EnabledButtons

TButtonSet

Определяет, какие из кнопок компонента должны быть доступными

Error

Longint

Указывает на код ошибки интерфайса MCI

ErrorMessage

String

Описывает тип ошибки MCI

FileName

String

Определяет имя файла для воспроизведения

Length

Longint

Указывает на продолжительность текущей записи

Mode

TMPModes

Указывает на текущий режим плеера

Position

Longint

Определяет текущую позицию воспроизведения в записи

Shareable

Boolean

Определяет, может ли выбранное устройство одновременно использоваться другими приложениями

TrackLength

Longint

Указывает на продолжительность дорожки

TrackPosition

Longint

Указывает на насчальную позицию дророжки

Tracks

Longint

Указывает на число дорожек

VisibleButtons

TButtonSet

Определяет, какие из кнопок компонента должны отображаться

Начнем со свойств, относящихся к внешнему виду компонента. Прежде всего, это ColoredButtons, EnabledButtons и VisibleButtons. С помощью этих свойств можно управлять доступностью и видом отдельных кнопок компонента. Всего кнопок 9, по числу основных операций, необходимых для устройства воспроизведения типа проигрывателя CD. Если же проигрывать компакт-диски не планируется, то вполне можно обойтись без кнопки выброса (btEject), равно как может быть излишним и наличие кнопок перехода между дорожками (btNext и btPrev). Кнопка записи (btRecord) также является ненужной, если речь идет именно о плеере.
Некоторые свойства необходимы только для определенных устройств воспроизведения, например, свойство Display актуально только для данных, имеющих видеоряд. Тип устройства задается свойством DeviceType, которое может принимать одно из следующих значений:

  • dtAutoSelect - тип устройства распознается автоматически;

  • dtAVIVideo - клип видео в формате AVI;

  • dtCDAudio - аудио CD;

  • dtSequencer - файл MIDI;

  • dtVideodisc - видео CD;

  • dtWaveAudio - файл WAV.

В то же время, в типичном случае оставляют принятое по умолчанию значение dtAuto, поскольку, за исключением CD и MIDI, остальные типы из реально встречающихся сейчас файлов не используются (тип dtAVIvideo подразумевает именно формат AVI, а не MPEG). Поддержка конкретных типов воспроизводимых файлов полностью лежит на ОС и установленных программах-кодеках, так что компонент MediaPlayer может воспроизводить все те же данные, что и Windows Media Player.
В простейшем случае, когда требуется только возможность проигрывания Audio-CD, достаточно просто поместить компонент на форму и установить свойство DeviceType в dtCDAudio, а AutoOpen - в истину. После этого останется лишь запустить приложение и нажать на кнопку Play, и если в приводе окажется диск формата CD-DA, то начнется его воспроизведение.
Если же надо создать универсальный проигрыватель, то потребуется оставить эти свойства как принято по умолчанию - DeviceType в dtAutoSelect, а AutoOpen - в ложь. При этом надо будет предусмотреть код, который будет устанавливать значение свойства FileName, если только не стоит задача воспроизводить один и тот же файл. Более того, для обычного проигрывателя многие кнопки будут лишними. кроме того, у компонента MediaPlayer имеется ряд методов, дублирующих нажатие на кнопки. А именно, Play, Stop, Back, Next и т.д. Но наиболее важными являются методы Open и Close. Первый делает плеер доступным, открывая интерфейс MDI, а второй, наоборот, закрывает. При этом следует учитывать, что открывать интерфейс можно только после того, как определен файл. Соответственно, если допустить, что на форме имеется проигрыватель (MediaMP), диалог открытия файла (OpenDlg) и кнопка "Открыть файл", то для нее код получится следующим:
if not OpenDlg.Execute then exit; MediaMP.Close; MediaMP.FileName:=OpenDlg.FileName; MediaMP.Open;
Если добавить еще строку с обращением к методу Play, то воспроизведение начнется автоматически. В то же время, если уж и создавать проигрыватель, то понадобится дать возможность остановить и продолжить просмотр. Итого получим 3 кнопки. Что касается компонента MediaPlayer, то нам от него понадобится лишь взаимодействие с системой, таким образом можно будет сделать его невидимым, установив свойство Visible в ложь. Вместе с тем, для вывода видео нам понадобится какой-либо компонент, происходящий от TWinControl, и обычная панель для этих целей вполне пригодна. Единственный вопрос может заключаться в том, что размеры видео могут быть больше, чем отведено пространства на панели. В таком случае нам поможет свойство DisplayRect, при помощи которого можно не только узнать размеры кадра, но и установить нужное. Поскольку при этом важно не нарушить пропорции, то проверять придется отдельно высоту и ширину, и вычислять нужный коэффициент масштабирования. Таким образом, нам надо будет сначала вычислить оба коэффициента, а затем в качестве окончательного взять больший.
var kw, kh, k: real; ... kw:=MediaMP.DisplayRect.Right/VideoPan.Width; kh:=MediaMP.DisplayRect.Bottom/VideoPan.Height; if (kw>1) or (kh>1) then begin if kh>kw then k:=kh else k:=kw; end else k:=1;
После этого останется лишь вычислить окончательные размеры изображения и установить получившиеся значения свойству DisplayRect, чтобы любой клип "вписался" в область просмотра, а новые значения можно вывести в окне заголовка (рис. 15.4).

Рис. 15.4. Воспроизведение видео MPEG4 с масштабированием
Полный код приложения находится в каталоге Demo\Part3\Mplay.

Download 361.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling