Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.12.2011, 10:16
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию TMediaPlayer -AVI: сразу показать 1-ый кадр

Использую компонент TMediaPlayer для показа на форме (на ней TPanel в качестве "экрана") компрессированного AVI-файла. Не трудно сделать, чтобы сразу после открытия AVI пошёл режим Play. Но мне надо, чтобы после открытия файла был показан только первый кадр, и потом приложение ожидало нажатия кнопки Play. Без режима Play поначалу будет просто серый "экран". Как это сделать правильно?
Ответить с цитированием
  #2  
Старый 06.12.2011, 10:20
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Когда открываешь файл для просмотра, после открытия допиши:
Код:
  MediaPlayer1.Display:=Panel1;
  MediaPlayer1.Play;
  MediaPlayer1.Previous;

Последний раз редактировалось m1sclick, 06.12.2011 в 10:49.
Ответить с цитированием
  #3  
Старый 06.12.2011, 10:49
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию

Разумеется, нужен первый кадр вместо пустой серой формы. Код типа:
Код:
{ Выводим на PlazmaPanel первый кадр и показываем заголовок формы }
   mciPlay.dwFrom := 0;    mciPlay.dwTo := 0;
   mciPlay.dwCallback := 0;
   mciSendCommand(MediaPlayer1.DeviceID, mci_Play,
     mci_Notify or mci_From or mci_To, UIntPtr(@mciPlay));
Ничего не дал...
Ответить с цитированием
  #4  
Старый 06.12.2011, 10:50
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Смотри выше.
Ответить с цитированием
  #5  
Старый 06.12.2011, 11:06
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от m1sclick
Когда открываешь файл для просмотра, после открытия допиши:
Код:
  MediaPlayer1.Display:=Panel1;
  MediaPlayer1.Play;
  MediaPlayer1.Previous;
Не помогает! Если убрать строку с Previous - всё в непрерывном режиме показывается. Если её добавить - опять серый экран, и всё
Ответить с цитированием
  #6  
Старый 06.12.2011, 11:40
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Выложи весь код своего плеера, ибо у меня работает а у тебя нет.
Ответить с цитированием
  #7  
Старый 06.12.2011, 12:54
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию

Код:
{= Открытие AVI-файла и вывод на TPanel первого кадра =}
function TPlayAviForm.OpenAviFile(const AviFileName:
  TFileName): Boolean;
begin
   With MediaPlayer1 do try
   Close;   Wait := False;
   FileName := AviFileName;   Open;
   TimeFormat := tfFrames;   FramesCount := Length;
   except
   MessageDlg('Incorrect AVI-file :' + #13 + AviFileName,
    mtError, [mbCancel], 0);
   Result := False;  Exit;
   end;
{---------------------------------------------------------------------}
   If FramesCount = 0 then begin
   MessageDlg('There are no frames in' + #13 + AviFileName,
    mtError, [mbCancel], 0);
   Result := False;  Exit;
   end else begin
{ Задаём размеры TPanel и всей формы по размеру кадра в открытом AVI }
{......}
{......}
{ Выводим на TPanel первый кадр  }
   MediaPlayer1.Play;    MediaPlayer1.Previous;
   end;
Result := True;
end;
После вызова этого метода, показывается форма (ShowModal), на которой установлена TPanel. Вот собственно и всё. Delphi XE2, Win7-64
TPanel, есс-нно, задана для MediaPlayer1 как "экран" (в инспекторе объектов)
Ответить с цитированием
  #8  
Старый 06.12.2011, 13:46
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Твой код не использовал потому-что не понравился он мне. Вот, все работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
i:=0;
while i = 0 do
begin
  if OpenDialog1.Execute then
  begin
    MediaPLayer1.FileName:= OpenDialog1.FileName;
    inc(i);
  end;
end;
  MediaPLayer1.Open;
  Form2.Show;
  MediaPlayer1.Play;
  MediaPlayer1.Previous;
end;

Вот некоторые мои соображения:
1. Form2 открывай не как модальное окно, а просто Show. Лично у меня была проблема с этим.
2. Зачем использовать для отображения TPanel если можно выводить прямо в Form2?
Я хотел поместить весь код под одну кнопку и поэтому получилось немного не красиво.

UPD: еще как вариант можешь ставить на паузу MediaPlayer1.Pause;

Последний раз редактировалось m1sclick, 06.12.2011 в 13:53.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter