gpt4 book ai didi

animation - 视频文件(带alpha)作为启动画面?

转载 作者:行者123 更新时间:2023-12-04 18:17:02 32 4
gpt4 key购买 nike

我现在正在寻找 Inno Setup 的扩展以使用视频文件,例如 AVI 或 .png 序列作为我安装的启动屏幕(使用 alpha channel 将是一个巨大的加上但不是必须的)。
有几个 .dll 可以使用带有淡入和淡出的静态图片,但我找不到任何可用作视频文件的东西。

据我所知,我可以在 Inno Setup 中使用任何类型的 .dll。例如,我可以使用流行的 bass.dll 进行音频播放,即使它没有“真正的”Inno 支持,但 Inno 可以调用该 .dll 的功能。

那么是否有任何程序可以让我这样做?
朝那个方向的任何提示都会非常有帮助。

编辑:这可能使用 Qt,我知道您可以为您的应用程序制作基于框架的启动画面,但我不确定是否可以将 Qt 与 Inno Setup 一起使用?

最佳答案

我创立了 Inno Media Player 该项目能够将视频和音频播放嵌入到 InnoSetup 向导中。它基于 DirectShow 技术,至少需要 DirectX 9 才能使用。

除了 built-in formats 它支持所有 DirectShow 编解码器,但您应该考虑到您的目标用户不需要为某些特殊媒体格式安装编解码器并安装它们的编解码器,因为在安装启动时显示对用户来说是过度杀伤和不公平的。

关于您想要的透明度,如果您找到支持它的编解码器,我们可以尝试使弹出窗口透明并让 DirectShow 渲染器在分层窗口上绘制,但没有编解码器和示例视频我做不到没有什么。

  • 您可以在源主干中找到带有示例脚本的库或下载它 from here
  • 我写了一个简单的 function reference 在哪里可以找到函数参数说明

  • 因此,要在显示向导表单之前显示带有视频播放的弹出窗口,您可以使用以下命令:

    请注意,Inno Media Player 是一个 Unicode 库,因此您只能将其与 InnoSetup 的 Unicode 版本一起使用,而不能与 ANSI 版本一起使用!不支持 ANSI 版本的 InnoSetup...!
    [Setup]
    AppName=Media Player Project
    AppVersion=1.0
    DefaultDirName={pf}\Media Player Project

    [Files]
    Source: "MediaPlayer.dll"; Flags: dontcopy

    [Code]
    const
    EC_COMPLETE = $01;

    type
    TDirectShowEventProc = procedure(EventCode, Param1, Param2: Integer);

    function DSPlayMediaFile: Boolean;
    external 'DSPlayMediaFile@files:mediaplayer.dll stdcall';
    function DSStopMediaPlay: Boolean;
    external 'DSStopMediaPlay@files:mediaplayer.dll stdcall';
    function DSInitializeVideoFile(FileName: WideString; WindowHandle: HWND;
    var Width, Height: Integer; CallbackProc: TDirectShowEventProc): Boolean;
    external 'DSInitializeVideoFile@files:mediaplayer.dll stdcall';

    var
    VideoForm: TSetupForm;

    procedure OnMediaPlayerEvent(EventCode, Param1, Param2: Integer);
    begin
    if EventCode = EC_COMPLETE then
    VideoForm.Close;
    end;

    procedure OnVideoFormShow(Sender: TObject);
    begin
    DSPlayMediaFile;
    end;

    procedure OnVideoFormClose(Sender: TObject; var Action: TCloseAction);
    begin
    DSStopMediaPlay;
    end;

    procedure InitializeWizard;
    var
    Width: Integer;
    Height: Integer;
    begin
    VideoForm := CreateCustomForm;
    VideoForm.Caption := 'Popup Video Window';
    VideoForm.BorderStyle := bsNone;
    VideoForm.FormStyle := fsStayOnTop;
    VideoForm.Position := poScreenCenter;
    VideoForm.OnShow := @OnVideoFormShow;
    VideoForm.OnClose := @OnVideoFormClose;

    if DSInitializeVideoFile('d:\Video.avi', VideoForm.Handle, Width,
    Height, @OnMediaPlayerEvent)
    then
    begin
    VideoForm.ClientWidth := Width;
    VideoForm.ClientHeight := Height;
    VideoForm.ShowModal;
    end;
    end;

    procedure DeinitializeSetup;
    begin
    DSStopMediaPlay;
    end;

    希望对您有所帮助!

    关于animation - 视频文件(带alpha)作为启动画面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484388/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com