![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Использую компонент TMediaPlayer для показа на форме (на ней TPanel в качестве "экрана") компрессированного AVI-файла. Не трудно сделать, чтобы сразу после открытия AVI пошёл режим Play. Но мне надо, чтобы после открытия файла был показан только первый кадр, и потом приложение ожидало нажатия кнопки Play. Без режима Play поначалу будет просто серый "экран". Как это сделать правильно?
![]() |
|
#2
|
|||
|
|||
|
Когда открываешь файл для просмотра, после открытия допиши:
Код:
MediaPlayer1.Display:=Panel1; MediaPlayer1.Play; MediaPlayer1.Previous; Последний раз редактировалось m1sclick, 06.12.2011 в 10:49. |
|
#3
|
|||
|
|||
|
Разумеется, нужен первый кадр вместо пустой серой формы. Код типа:
Код:
{ Выводим на 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
|
|||
|
|||
|
Смотри выше.
|
|
#5
|
|||
|
|||
|
Цитата:
|
|
#6
|
|||
|
|||
|
Выложи весь код своего плеера, ибо у меня работает а у тебя нет.
|
|
#7
|
|||
|
|||
|
Код:
{= Открытие 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;TPanel, есс-нно, задана для MediaPlayer1 как "экран" (в инспекторе объектов) |
|
#8
|
|||
|
|||
|
Твой код не использовал потому-что не понравился он мне. Вот, все работает:
Код:
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. |