|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TMediaPlayer -AVI: сразу показать 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. |