Page 1 sur 1

[..] intégration de windows media player avec une résolution fixe

Posté : jeu. 23 mai 2024 14:31
par franco
Bonjour.


Pour faire simple, j'ai un projet en tête : extraire une partie d'une vidéo.
Jai donc intégré Windows Media Player dans une GUI.

Et j'ai "redimensionné" en 1600 x 800 via GUICtrlCreateObj

Je voudrais donc lancer une vidéo quelconque, mais dans la résolution que j'ai moi-même fixé (1600x800).


Or, quelque soit la vidéo choisie, elle se lance dans sa résolution native, et donc une résolution trop élevée : les contrôles de Windows Media player sont "cachées"


En gros : je voudrais voir les contrôles de Windows Media Player.
Pour éviter de récupérer le début et la fin de l'extrait à l'aveuglette. :mrgreen:



Comment faire ?


Voici le script :
► Afficher le textescript
Merci à tous.
Bonne journée.
:D

Re: [..] intégration de windows media player avec une résolution fixe

Posté : mar. 28 mai 2024 07:55
par Nine
Voici un exemple simple pour ajuster les dimensions de l'OCX.

Code : Tout sélectionner

#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", True)

Example()

Func Example()
  Local $oPlayer = ObjCreate("WMPlayer.OCX")
  GUICreate("Embedded Web control Test", 1000, 800)
  GUICtrlCreateObj($oPlayer, 40, 40, 800, 600)
  $oPlayer.Settings.Volume = 100
  $oPlayer.uiMode = "none"

  Local $sFullPath = "D:\Video\Alberta\Alberta.wmv"

  GUISetState()

  $oPlayer.URL = $sFullPath
  While $oPlayer.playState = 9
    Sleep(50)
  WEnd
  If $oPlayer.playState <> 3 Then Exit MsgBox($MB_SYSTEMMODAL, "Error", $sFullPath & " cannot be played")
  ResizeOCX($oPlayer, 40, 40, 800, 600)

  While True
    Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
        ExitLoop
    EndSwitch
    If $oPlayer.playState <> 3 Then ExitLoop
  WEnd
EndFunc   ;==>Example

Func ResizeOCX($oObject, $iLeft, $iTop, $iRight, $iBottom)
  Local Const $tagIOleInPlaceObj = _
      "ContextSensitiveHelp hresult(int); " & _
      "GetWindow hresult(ptr); " & _
      "InPlaceDeactivate hresult(); " & _
      "ReactivateAndUndo hresult(); " & _
      "SetObjectRects hresult(ptr; ptr;); " & _
      "UIDeactivate hresult();"
  Local Static $oIInPlace = ObjCreateInterface($oObject, "{00000113-0000-0000-C000-000000000046}", $tagIOleInPlaceObj)
  Local $tRect = DllStructCreate($tagRECT)
  $tRect.Left = $iLeft
  $tRect.Top = $iTop
  $tRect.Right = $iRight
  $tRect.Bottom = $iBottom
  Local $pRect = DllStructGetPtr($tRect)
  Local $iRes = $oIInPlace.SetObjectRects($pRect, $pRect)
  ConsoleWrite($iRes & @CRLF)

EndFunc   ;==>ResizeOCX

Re: [..] intégration de windows media player avec une résolution fixe

Posté : jeu. 11 juil. 2024 06:56
par Anthony
Bonjour franco,

Ayant traité pas mal de scrips Avisynth je me demande si cette option de passer par un .avs ne bousterai pas les performances (utilisation du GPU).
çà fait quelques étapes de plus c'est certain mais je partirai sur quelque chose comme çà.
Voici une ébauche https://autoitscript.fr/forum/viewtopic.php?t=14886