![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Воспроизведения фильма с произвольного места DSPack. [D7, WinXP]
Artin © (2004-09-03 20:07:00)Здравствуйте.
Я пишу на Дельфи 7 свой видео проигрыватель.
Использую для этого DSPpack. Я всё сделал что хотел кроме одного. Не могу заставить воспроизводиться с какого либо момента.
Тоесть у меня ролик на 60 сек а я хочу чтобы воспроизведение начиналось например с 30. Я искал и нарыл команду SetPosition. Но вот беда работает как то глючно не с первого раза короче не работает. Может вы знаете как это сделать правильно?
programania (2004-09-13 16:22:00) [1]Установка позиции фильма который запущен при помощи DSPack
работает всегда в programania.com/ENJOL.ZIP
PROCEDURE PosAvi(pos:integer);
var
CurrPos,stopPos : Int64;
MediaSeeking: IMediaSeeking;
hms:TDVDHMSFTimeCode;
DvdControl:IDvdControl2;
i:integer;
begin
with form1.FilterGraph1 do begin
if dvd then begin
//Это для DVD из IFO или VOB pos=милиСекунды
i:=pos div 1000;
hms.bHours:=i div 3600;
hms.bMinutes:=(i-hms.bHours*3600)div 60;
hms.bSeconds:= i-hms.bHours*3600-hms.bMinutes*60;
QueryInterface(IDvdControl2, DvdControl);
DvdControl.PlayAtTime(@hms,DVD_CMD_FLAG_None, DvdCmd);
DvdControl := nil;
end
else begin
//Это для Avi pos=позиция trackbar1
QueryInterface(IMediaSeeking, MediaSeeking);
with MediaSeeking do Begin
GetStopPosition(stopPos);
CurrPos:=stopPos*pos div (trackBar1.max);
SetPositions(currPos,AM_SEEKING_AbsolutePositioning,stopPos,AM_SEEKING_NoPositioning);
end;
end;
end
end;
еще проверьте: может вызывается многократно и одновременно
такое в windows может бывыет и выглядит как непредсказуемые глюки,
еще важно откуда вызывать: лучше из timer чтоб один раз
если что непонятно напишите mail@programania.com
Artin (2004-09-03 20:11:00) [2]См.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1091714055&n=7
Модератор убей этот пост и будеш прав.
Извиняюсь.