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.
Comment faire ?
Voici le script :
► Afficher le textescript
#include <GUIConstantsEx.au3>#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 1800, 890, 192, 124)GUICtrlCreateLabel("Fichier Vidéo", 5, 5, 70, 20)$ientree = GUICtrlCreateInput("", 70, 0, 400, 25)$ch_vid = GUICtrlCreateButton("...", 480, 0, 25, 25)$oWMP = ObjCreate("WMPlayer.OCX")GUICtrlCreateObj($oWMP, 0, 40, 1600, 800)$oWMP.WindowlessVideo = False$oWMP.UIMode = "full"$oWMP.EnableContextMenu = False$oWMP.StretchToFit = True ; Cette ligne permet d'ajuster la vidéo à la taille de la fenêtre$oWMP.Settings.AutoStart = False$oWMP.Settings.EnableErrorDialogs = False$btn_debut = GUICtrlCreateButton("Début", 5, 850, 120, 20)GUISetState(@SW_SHOW)While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $ch_vid ; Create a constant variable in Local scope of the message to display in FileOpenDialog. Local $sMessage = "Choisissez un fichier vidéo...." ; Display an open dialog to select a file. Local $sFileOpenDialog = FileOpenDialog($sMessage, @DesktopDir & "\", "All (*.*)", 1) If @error Then GUICtrlSetData($ientree, "") Else GUICtrlSetData($ientree, $sFileOpenDialog) $oWMP.Url = $sFileOpenDialog $oWMP.controls.play EndIf Case $btn_debut $debut = $oWMP.controls.currentPosition MsgBox(0, "", $debut) EndSwitchWEnd
Merci à tous.
Bonne journée.

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