Jump to content

MediaPlayer ocx


Recommended Posts

Hi, i made a program that allow to play web radio, now i would like to calculate bitrate of .asx file.

For example i've this code :

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test", 145, 97, 302, 69)
$Button1 = GUICtrlCreateButton("Play", 8, 8, 131, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 40, 131, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Kb/s", 104, 72, 27, 17)
$Label2 = GUICtrlCreateLabel("", 56, 72, 4, 4)
$Label3 = GUICtrlCreateLabel("Bitrate", 8, 72, 34, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$gMediaObject = _CreateWMPlayer()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $gMediaObject.URL = "http://xxxx/xxxx.asx"
            ; i would like to send in $Label2 the bitrate how can i do this?
    EndSwitch
WEnd

Func _CreateWMPlayer()
    $Object = ObjCreate("WMPlayer.OCX.7")
    $Object.URL = ""
    Return $Object
EndFunc   ;==>_CreateWMPlayer

Now i would like to send in $Label2 the bitrate how can i do this?

Thank's a lot!

Link to comment
Share on other sites

Now i would like to send in $Label2 the bitrate how can i do this?

Try this:

$bitrate = $gMediaObject.CurrentMedia.GetItemInfo("bitrate") ; byte/s
$bitrate = Round(Number($bitrate) / 1024, 2)
GUICtrlSetData($Label2, "" & $bitrate)

UDFS & Apps:

Spoiler

DDEML.au3 - DDE Client + Server
Localization.au3 - localize your scripts
TLI.au3 - type information on COM objects (TLBINF emulation)
TLBAutoEnum.au3 - auto-import of COM constants (enums)
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector - OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCEĀ 

Link to comment
Share on other sites

It don't work, the code give me 0kb/s with all radio! Another solution?

This is the right solution! Your script has to wait until the media has loaded before you can read its attributes.

UDFS & Apps:

Spoiler

DDEML.au3 - DDE Client + Server
Localization.au3 - localize your scripts
TLI.au3 - type information on COM objects (TLBINF emulation)
TLBAutoEnum.au3 - auto-import of COM constants (enums)
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector - OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCEĀ 

Link to comment
Share on other sites

Dont work for me this is the code, when i add you code :mellow:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Test", 146, 98, 302, 69)
$Button1 = GUICtrlCreateButton("Play", 8, 8, 131, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 40, 131, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Kb/s", 104, 72, 27, 17)
$Label2 = GUICtrlCreateLabel("", 56, 72, 44, 20)
$Label3 = GUICtrlCreateLabel("Bitrate", 8, 72, 34, 17)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###
$gMediaObject = _CreateWMPlayer()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $gMediaObject.URL = "mms://85.248.7.162/EXPRES_LQ"
            $bitrate = $gMediaObject.CurrentMedia.GetItemInfo("bitrate") ; byte/s
            $bitrate = Round(Number($bitrate) / 1024, 2)
            GUICtrlSetData($Label2, "" & $bitrate)
            ; i would like to send in $Label2 the bitrate how can i do this?
        EndSwitch
WEnd

Func _CreateWMPlayer()
    $Object = ObjCreate("WMPlayer.OCX.7")
    $Object.URL = ""
    Return $Object
EndFunc   ;==>_CreateWMPlayer

It give me with all radio, bitrate 0 kbs...

Another solution?

Hi!

Link to comment
Share on other sites

You're not listening to him

First point this is the wrong forum. Did you happen to miss the bit that said AutoItX, the COM/ActiveX version of AutoIt?

Example of going about it.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Test", 146, 98, 302, 69)
$Button1 = GUICtrlCreateButton("Play", 8, 8, 131, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 40, 131, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Kb/s", 104, 72, 27, 17)
$Label2 = GUICtrlCreateLabel("", 56, 72, 44, 20)
$Label3 = GUICtrlCreateLabel("Bitrate", 8, 72, 34, 17)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###
$gMediaObject = _CreateWMPlayer()
$timer = TimerInit ()

$CURRENTLY_PLAYING = False

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $gMediaObject.URL = "mms://85.248.7.162/EXPRES_LQ"
            $gMediaObject.Controls.play
            $CURRENTLY_PLAYING = TRUE
    EndSwitch

    If $CURRENTLY_PLAYING Then
        If TimerDiff ($timer) >= 1000 Then
            GUICtrlSetData($Label2, Round(Number($gMediaObject.CurrentMedia.GetItemInfo("bitrate")) / 1024, 2))
            $timer = TimerInit ()
        EndIf
    EndIf
WEnd

Func _CreateWMPlayer()
    $Object = ObjCreate("WMPlayer.OCX.7")
    $Object.URL = ""
    Return $Object
EndFunc   ;==>_CreateWMPlayer
Link to comment
Share on other sites

First point this is the wrong forum. Did you happen to miss the bit that said AutoItX, the COM/ActiveX version of AutoIt?

Yeah, he posted his question all around the place in different forums.

Example of going about it.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Test", 146, 98, 302, 69)
$Button1 = GUICtrlCreateButton("Play", 8, 8, 131, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 40, 131, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Kb/s", 104, 72, 27, 17)
$Label2 = GUICtrlCreateLabel("", 56, 72, 44, 20)
$Label3 = GUICtrlCreateLabel("Bitrate", 8, 72, 34, 17)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###
$gMediaObject = _CreateWMPlayer()
$timer = TimerInit ()

$CURRENTLY_PLAYING = False

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $gMediaObject.URL = "mms://85.248.7.162/EXPRES_LQ"
            $gMediaObject.Controls.play
            $CURRENTLY_PLAYING = TRUE
    EndSwitch

    If $CURRENTLY_PLAYING Then
        If TimerDiff ($timer) >= 1000 Then
            GUICtrlSetData($Label2, Round(Number($gMediaObject.CurrentMedia.GetItemInfo("bitrate")) / 1024, 2))
            $timer = TimerInit ()
        EndIf
    EndIf
WEnd

Func _CreateWMPlayer()
    $Object = ObjCreate("WMPlayer.OCX.7")
    $Object.URL = ""
    Return $Object
EndFunc   ;==>_CreateWMPlayer

This should work.

Another approach is to listen for PlayStateChange event:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Test", 146, 98, 302, 69)
$Button1 = GUICtrlCreateButton("Play", 8, 8, 131, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 40, 131, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("Kb/s", 104, 72, 27, 17)
$Label2 = GUICtrlCreateLabel("", 56, 72, 44, 20)
$Label3 = GUICtrlCreateLabel("Bitrate", 8, 72, 34, 17)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###
$gMediaObject = _CreateWMPlayer()
ObjEvent($gMediaObject, "WMPEvent_", "PlayStateChange")

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $gMediaObject.URL = "mms://85.248.7.162/EXPRES_LQ"
            $gMediaObject.Controls.play
    EndSwitch
WEnd

Func _CreateWMPlayer()
    $Object = ObjCreate("WMPlayer.OCX.7")
    $Object.URL = ""
    Return $Object
EndFunc   ;==>_CreateWMPlayer

Func WMPEvent_PlayStateChange($newState)
    If 3 = $newState Then
        Local $bitrate = $gMediaObject.CurrentMedia.GetItemInfo("bitrate") ; byte/s
        $bitrate = Round(Number($bitrate) / 1024, 2)
        GUICtrlSetData($Label2, "" & $bitrate)
    EndIf
EndFunc

UDFS & Apps:

Spoiler

DDEML.au3 - DDE Client + Server
Localization.au3 - localize your scripts
TLI.au3 - type information on COM objects (TLBINF emulation)
TLBAutoEnum.au3 - auto-import of COM constants (enums)
AU3Automation - export AU3 scripts via COM interfaces
TypeLibInspector - OleView was yesterday

Coder's last words before final release: WE APOLOGIZE FOR INCONVENIENCEĀ 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...