Специалист компьютерной фирмы консультирует по телефону клиентку, только что купившую компьютер. Для начала он проводит разведку - типа что за машина.
- Откройте инструкцию..., посмотрите, что написано с обратной стороны монитора...
Наконец, он говорит:
- Так, я вижу что у вас компьютер - Apple.
Вдруг в трубке:
- Ой.. (и тишина).
Через некоторое время появляется голос клиентки:
- Ой, простите, если бы я знала, что вы меня видите, я бы сразу накинула халат.
Просто проиграть его на другой форме, развернутой на весь экран
{Code for Form 1}uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
Form2.WindowState := wsMaximized;
Form2.MediaPlayer1.Notify := false;
Form2.MediaPlayer1.Display := Form2.Panel1;
Form2.MediaPlayer1.FileName := 'C:\TheWall\DELCAR2.AVI';
Form2.MediaPlayer1.Open;
Form2.MediaPlayer1.DisplayRect := Form2.ClientRect;
Form2.MediaPlayer1.Play;
end;
{Code for Form 2}procedure TForm2.MediaPlayer1Notify(Sender: TObject);
beginif MediaPlayer1.NotifyValue = nvSuccessful then
Form2.Close;
end;
Цель - проиграть файл AVI на полноэкранном экране Form2 при клике кнопки Button1 из Form1.
Вот разбивка кода:
Form1
При клике Button1, форма Form2 отображается и ее окно максимально масштабируется (wsMaximized).
Установка Notify в false для MediaPlayer1 для предотвращения уведомлений при проигрывании файла.
Установка Display в Panel1 (который, вероятно, является панельным контролем) для отображения медиаплеера в этом панели.
Установка имени файла в 'C:\TheWall\DELCAR2.AVI'.
Открытие файла с помощью метода Open и его проигрывание с помощью метода Play.
Form2
При уведомлении MediaPlayer1 о успешном проигрывании, форма Form2 закрывается (Close).
Однако, в коде есть маленькая проблема: не проверяется значение NotifyValue в процедуре MediaPlayer1Notify. Это может привести к неожиданному поведению или краху при ошибке во время проигрывания.
Вот некоторые предложения по улучшению кода:
Вместо установки Notify в false, можно использовать обработчик события EndPlay для уведомления о конце проигрывания.
Можно добавить обработку ошибок, чтобы поймать любые потенциальные ошибки, которые могут возникнуть при открытии файла. Например, можно проверить значение возвращаемое методом Open и обработать исключения, которые возникают.
Чтобы проиграть файл AVI на полноэкранном экране, можно установить свойство DisplayRect MediaPlayer1 в клиентский прямоугольник Form2 (ClientRect). Это сделает медиаплеер отображать его содержимое на всей форме. Однако, это может не работать как ожидалось, если на Form2 есть другие контролы или панели, которые нужно учитывать.
Если вы хотите более robust решение для проигрывания полноэкранного видео, можно использовать библиотеку DirectShow или VLC SDK, которые предоставляют болееadvanced функции и лучше производительность.
В статье описывается способ проигрывания файла AVI на полный экран в приложении Delphi, используя компонент MediaPlayer и формы Forms.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.