IsDXvideo

DLL IsDXvideo 2022-11-05

Нет прав для скачивания

LexBell

Борода
Супер модератор
Пользователь LexBell разместил новый ресурс:

IsDXvideo - Плагин к Inno Setup для воспроизведения видео в окне инсталлятора.

Информация:

Описание:
Плагин к Inno Setup для воспроизведения видео в окне инсталлятора.​
Отличие от остальной кучи - Не используется ни движок ни интерфейс вывода Виндовс Медиа Плеера.​
Огромное спасибо [FONT=Arial][B]Winst@n[/B][/FONT] за пинки время от времени, и [FONT=Arial][B]South[/B][/FONT] за направление поиска решения проблемы :)[/USER]
Узнать больше об этом ресурсе...
 

Вложения

Последнее редактирование:

xman189

Мимокрокодил
П
Пользователь LexBell разместил новый ресурс:

IsDXvideo - Плагин к Inno Setup для воспроизведения видео в окне инсталлятора.



Узнать больше об этом ресурсе...
Помоги пож-та сделать скрипт, чтобы просто в самом начале видео проигрывалось (просто как splashscreen) и потом начался инсталлятор.
Заранее спасибо!!
 

Adil

Старожил
Всем привет. Спасибо за библиотеку. Есть 1 вопрос, что сделать чтобы видео воспроизводилось 1 раз? Я уже многое позабыл, попробовал вот так:

ExtractTemporaryFile('{#Video}');
Portal := DXvideoAdd(AutoRun.Handle,ExpandConstant('{tmp}\{#Video}'),5,ScaleX(283),ScaleY(89),ScaleX(369),ScaleY(213),55);

if DXvideoGetCurrentTime(Portal) == DXvideoGetFinishedTime(Portal) then begin
DXvideoSetTime(Portal, 0);
DXvideoPause(Portal);
end;
DXvideoInit;

Инно выдал ошибку про знак ==, потом убрал 1 знак равенства но результата никакого нету.
 

Adil

Старожил
Nemko, Спасибо, то что надо. Еще один вопрос, как правильно написать DXvideoSetTime?
DXvideoSetTime(video, 0.0) и DXvideoSetTime(video, 0) выдают ошибки.
 

Nemko

Дилетант
Модератор
Adil, извините за долгую невозможность ответить(работа). Чтобы можно было пользоваться данной функцией, ее нужно изменить немного, там вроде допущена небольшая ошибка (тип функции не Double, а Integer). Измените саму функцию на это:
Код:
function  DXvideoSetTime(DXV:Integer;time:Double):Integer;external 'DXvideoSetTime@files:IsDXvideo.dll stdcall';
А дальше пишите как писали раньше, и так и так (DXvideoSetTime(video, 0.0) и DXvideoSetTime(video, 0) будет верно.
 
  • Like
Реакции: Adil

Adil

Старожил
Nemko, Спасибо что ответили. Понимаю, бывает. Еще вопрос :D модуль может воспроизводить 2 разных видео одновременно?

ExtractTemporaryFile('NFS1_Intro.avi');
ExtractTemporaryFile('NFS2_Intro.avi');

NFS1_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS1_Intro.avi'),15,ScaleX(8),ScaleY(8),ScaleX(369),ScaleY(213),0);
NFS1_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS2_Intro.avi'),15,ScaleX(8),ScaleY(375),ScaleX(369),ScaleY(213),0);


DXvideoInit;

Если делать так, то у первого видео воспроизводится и видео и звук, а у второго только звук, изображения нету.
 
Последнее редактирование:

SBalykov

Старожил
Nemko, Спасибо что ответили. Понимаю, бывает. Еще вопрос :D модуль может воспроизводить 2 разных видео одновременно?

ExtractTemporaryFile('NFS1_Intro.avi');
ExtractTemporaryFile('NFS2_Intro.avi');

NFS1_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS1_Intro.avi'),15,ScaleX(8),ScaleY(8),ScaleX(369),ScaleY(213),0);
NFS1_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS2_Intro.avi'),15,ScaleX(8),ScaleY(375),ScaleX(369),ScaleY(213),0);


DXvideoInit;

Если делать так, то у первого видео воспроизводится и видео и звук, а у второго только звук, изображения нету.
А если поправить:
NFS1_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS1_Intro.avi'),15,ScaleX(8),ScaleY(8),ScaleX(369),ScaleY(213),0);
NFS2_Intro := DXvideoAdd(WizardForm.Handle,ExpandConstant('{tmp}\NFS2_Intro.avi'),15,ScaleX(8),ScaleY(375),ScaleX(369),ScaleY(213),0);
 
  • Like
Реакции: Adil

EvilAlex

Старожил
Всем добра!
А как сделать чтобы картинка была поверх видео ?
Заранее спасибо)
 

Вложения

Nemko

Дилетант
Модератор
Adil, может у Вас что то с кодеком, у меня все норм, да и на VirtualBox тоже.
EvilAlex, Думаю Fairy сможет, но есть проблема при OnClick по этой картинке WizardForm подвисает и становится не активным (помогает сворачивание и разворачивание окна). Пока не знаю что конфликтует, но если есть идеи мне будет интересно почитать. Вот примерчик https://yadi.sk/d/gCc32vQa3GRtHP.

P.S.: По моему такой градитент проще сделать в самом видео, например в Sony Vegas. Но задумка интересная.
 
  • Like
Реакции: Adil

LexBell

Борода
Супер модератор
А повтор видео в даном плагине можно реализовать(без панели паузы, отмотки назад и тд) - автоматом,чтобы через некоторое количество времени повторялось?
Видео и так закольцовано, если в DXvideoAdd не указано время, через которое нужно стать на паузу. Если нужно чтобы через какое-то время (не в конце видео) нужно начинать сначала, то в таймере можно например
code_language.pascal:
if DXvideoGetCurrentTime(v)= 10 then DXvideoSetTime(v, 0);
Где v - твое видео, 10 - количество секунд, через которое нужно начать видео сначала
 
Последнее редактирование:

LexBell

Борода
Супер модератор
Кстати, в скрипте косяк, спасибо Yaroslav950 ,
вместо
code_language.pascal:
function DXvideoSetTime(DXV:Integer;time:Double):Double;external 'DXvideoSetTime@files:IsDXvideo.dll stdcall';
// позволяет перейти на нужную точку видеопотока в секундах
должно быть так
code_language.pascal:
procedure  DXvideoSetTime(DXV:Integer;time:Double);external 'DXvideoSetTime@files:IsDXvideo.dll stdcall';
// позволяет перейти на нужную точку видеопотока в секундах
 

LexBell

Борода
Супер модератор
LexBell обновил(а) ресурс IsDXvideo новой записью:

Исправление скрипта

вместо
function DXvideoSetTime(DXV:Integer;time:Double):Double;external 'DXvideoSetTime@files:IsDXvideo.dll stdcall';
// позволяет перейти на нужную точку видеопотока в секундах
должно быть так

procedure DXvideoSetTime(DXV:Integer;time:Double);external 'DXvideoSetTime@files:IsDXvideo.dll stdcall';
// позволяет перейти на нужную точку видеопотока в секундах
Узнать больше об этом обновлении...
 

Yaroslav950

Участник
@LexBell,
2. Мини вопрос
function DXvideoGetVisible(DXV:Integer):Boolean;external 'DXvideoGetVisible@files:IsDXvideo.dll stdcall';
// Получение востояния видимости видео.
Что дает эта функция? Мне непонятно слово востояния видео.
2.1. procedure DXvideoFullScreen(DXV:Integer);external 'DXvideoFullScreen@files:IsDXvideo.dll stdcall';
// воспроизведение во весь экран хз, нужно-ли.
Тоже воспроизвединие идёт,если переключаешь на следующую страницу (во весь экран),а не сразу. Или я что-то делаю не так.
 

LexBell

Борода
Супер модератор
Само видео можно показать-скрыть(DXvideoSetVisible). DXvideoGetVisible нужна для проверки текущего состояния.
 
Последнее редактирование:

LexBell

Борода
Супер модератор
Тоже воспроизвединие идёт,если переключаешь на следующую страницу (во весь экран),а не сразу. Или я что-то делаю не так.
А вот это интересно, нужно смотреть, предполагалась работа сразу по вызову. Там при вызове изменение состояния должно быть. Кусок кода с вызовом функции можно?
 

Yaroslav950

Участник
DXvideoGetVisible - Текущего состояния имеется виду в каком качестве или что?
 

Вложения

LexBell

Борода
Супер модератор
DXvideoGetVisible - Текущего состояния имеется виду в каком качестве или что?
Имеется ввиду, скрыто или нет в данный момент. да, DXvideoFullScreen работает четко, но не в момент запуска инсталлятора. немного непонятно, зачем? Если хочется типа видео-сплеш, то нужно на этапе InitializeSetup запускать, если хочется на фоне во весь экран, то нужно видео запускать на MainForm.
 
Сверху