-
Notifications
You must be signed in to change notification settings - Fork 3
This project demonstrates how to remotely communicate and control Zoom Player over a TCP/IP connection.
License
bLightZP/Zoom-Player-TCP-IP-API-sample
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
[ Zoom Player Command & Control interface ]
---------------------------------------------------------------------------------------------------------------------
*** Introduction:
Zoom Player supports multiple Command & Control interfaces:
1. TCP/IP based Command and Control.
Allows Command and Control of Zoom Player over an Internet or Intranet connection with full notification of the
player's state.
2. Inter-Process Win32 API Bi-Directional Command and Control.
An external application registers its window with Zoom Player by calling a specially crafted WinAPI "SendMessage"
command. Once the application window is registered, the application can send Zoom Player control commands using
the "SendMessage" WinAPI command and receive messages by capturing a special WinAPI message generated by
Zoom Player and sent to the registered Window.
3. Simplified Inter-Process Win32 Control.
A subset of commands that provide easy control over a limited subset of Zoom Player features.
4. Command Line Interface.
Control Zoom Player through the command line, requiring no programming experience whatsoever.
*** TCP/IP based Command and Control:
To use the TCP/IP interface, you must first enable it in the options dialog under "Advanced Options / System".
The default TCP/IP port is "4769", this value can be altered on the same options dialog page.
When using the TCP/IP interface, the event number is always sent and returned as a 4-digit code followed by the
event's content (when applicable). All content is string based and UTF-8 encoded to preserve country specific
character codes.
When sending TCP/IP commands, make sure to terminate each command with CRLF (ASCII #13#10).
*** Inter-Process Win32 API Bi-Directional Command and Control:
To register your application with Zoom Player, send Zoom Player (using the WinAPI "SendMessage" function) an
ATOM String containing your application's window name and the following parameters (in the "SendMessage" function):
WParam : ATOM String value created using the WinAPI "GlobalAddAtom" function.
LParam : A value of "200" indicating that your application is trying to register itself.
Message Number : WM_APP + 49.
Your application must now capture the "WM_APP+444" WinAPI message which Zoom Player uses to send information to
your application's window. When Zoom Player notifies your application, the Zoom Player API event number (see below)
is returned in the "WParam" value and the message content is returned in the "LParam" value.
If the LParam value contain a string, it is stored as an ATOM String which your application must free using the
WinAPI "GlobalDeleteAtom" function.
*** Generated Events (Events generated by Zoom Player and sent to your application):
[WParam] | [LParam]
-------------------------------------+-------------------------------------------------------------------------------
0000 - Application Name | String describing the Application
0001 - Application Version | String with the version text
0100 - Ping | Result of a call to message 0100,
indicating the player is responsive
1000 - State Change | 0 - Closed
1 - Stopped (doesn't apply to DVD,
DVD Stop = Closed)
2 - Paused
3 - Playing
1010 - Current Fullscreen State | 0 - Windowed
1 - Fullscreen
1020 - Current FastForward State | 0 - Disabled
1 - Enabled
1021 - Current Rewind State | 0 - Disabled
1 - Enabled
1100 - Position update | String containing media [Position / Duration],
For example:
00:00:12 / 01:02:35
1110 - Current Duration | Current Duration in milliseconds
1120 - Current Position | Current Position in milliseconds
1130 - Current Frame Rate (realtime) | Current Realtime Frame Rate in Frames per second (FPS)
Only works with DirectShow based content playback
1140 - Estimated Frame Rate | Estimated Frame Rate in Frames Per Second (FPS)
Note, some formats don't have a frame rate so the returned
value is an estimate.
1200 - OSD Message | String containing the OSD message
1201 - OSD Message Off | No value, message just tells that the OSD window
has disappeared
1300 - Current Play Mode | 0 - DVD Mode
1 - Media Mode
2 - Audio Mode
1310 - TV/PC Mode | 0 - PC Mode
1 - TV Mode (unused)
1400 - DVD Title Change | Current Title
1401 - DVD Title Count | Number of Titles
1410 - DVD Domain Change | See EC_DVD_DOMAIN_CHANGE in DirectX SDK
1420 - DVD Menu Mode | 0 - Not in a Menu
| 1 - In a Menu
1450 - DVD Unique String | Returns a unique DVD indentifer
1500 - DVD Chapter Change | Current Chapter
1501 - DVD Chapter Count | Number of Chapters
1600 - DVD/Media Active Audio Track | Current Audio Track Index
1601 - DVD/Media Audio Track Count | Number of Audio Tracks
1602 - DVD Audio Name | Contains the name of the Audio track and a
padded number for example "001 5.1 AC3"
1700 - DVD/Media Active Sub | Current Subtitle Track
1701 - DVD/Media Sub Count | Number of Subtitle Tracks
1702 - DVD Sub Name | Contains the name of the Subtitle track and a
padded number for example "001 5.1 AC3"
1704 - DVD Sub Disabled | 0 - Sub Visible
| 1 - Sub Hidden
1750 - DVD Angle Change | Current Angle
1751 - DVD Angle Count | Number of Angles in the DVD Title
1800 - Currently Loaded File | String containing file name
1810 - Current Playlist | String containing the Zoom Player Playlist
structure. Each entry is separated by the ">"
character and is further sub-divided
into additional sections in this structure:
|T .. |t - Title
|N .. |n - Name
|E .. |e - Extension
|D .. |d - Date
|S .. |s - Size
|P .. |p - Path
|R .. |r - Duration
|F .. |f - Forced Duration
It is possible addtional tags will be used
in future version, so code safely.
1811 - Playlist Count/Change | Triggered when the playlist is modified and returns the
Number of items in updated Playlist.
1855 - End of File | End of file has been reached
1900 - File PlayList Pos | String containing file position in playlist
1920 - Playlist Cleared Ack. | A notification that the playlist has been cleared
1950 - A Play List file was removed | String containing the file name
2000 - Video Resolution | String containing the
video resolution (if there is one)
2100 - Video Frame Rate | String containing the
video frame rate (if there is one)
2200 - AR Change | String containing the AR String
(same as OSD message)
2210 - DVD AR Mode Change | 0 - Unknown
1 - Full-Frame
2 - Letterbox
3 - Anamorphic
2300 - Current Audio Volume | The current Audio Volume
2400 - Media Content Tags | Returns Media Content Strings
(ID3/APE/WMA/Etc... Tags)
2500 - A CD/DVD Was Inserted | Returns path to drive the disc was inserted to
2611 - Video Display Area X-Ofs | Integer Value
2621 - Video Display Area Y-Ofs | Integer Value
2631 - Video Display Area Width | Integer Value
2641 - Video Display Area Height | Integer Value
2700 - Play Rate Changed | In Media Mode the Fast Play/Slow Motion Rate.
In DVD Mode the Fast Forward/Slow Motion/Rewind Rate.
Value is play rate multiplied by 1000. For example:
A value of "1500" means a play rate of "1.5".
If you call a function and get this message with the
play rate value unchanged, it means the function failed
to change the play rate.
2710 - Random Play State | 0 - Disabled
1 - Enabled
3000 - ZP Error Message | String of error messsage
Note that there can be multiple errors
appearing in sequence, only the last
error may be visible by the user.
3100 - Nav Dialog Opened | A Navigator Dialog has opened
0 - Blanking Navigator
1 - Chapter Navigator
2 - Context Navigator
3 - File Navigator
4 - GoTo Navigator
5 - Media Library Navigator
6 - MouseWheel Navigator
7 - Color Control Navigator
8 - Playlist Navigator
9 - Resize Navigator
10 - Station Navigator
11 - Web URL Navigator
12 - Main Navigator
13 - Media Library Selection Navigator
14 - Virtual Keyboard Input Navigator
15 - Equalizer Navigator
16 - Station Navigator
17 - Confirmation Navigator
18 - Play History Navigator
19 - Navigation Style Navigator
20 - Download Navigator
21 - Information Navigator
3110 - Nav Dialog Closed | A Navigator Dialog has closed
(Values are the same as #3100)
3200 - Screen Saver Mode | The ZP Screen Saver has:
0 - Started
1 - Ended
4000 - Virtual Keyboard Input Result | This message contains 3 parameters separated by the
"|" character.
The first parameter contains a value of "0" (fail) or
"1" (success).
The second parameter contains the unique text identifier
used in the initial 4000 call. In the cases where the
call was originated from within Zoom Player, the unique
identifier is always prefixed by "vk", for example "vkRename".
The third parameter contains the user entered UTF8 encoded
text string.
5100 - ZP Function Called | Value contains name of function
5110 - ZP ExFunction Called | Value contains name of function
5120 - ZP ScanCode Called | Value contains ScanCode.
6000 - Shared Items List | Value contains a list of files and folder returned
by the previous 6000 call. The returned format is
the same as message 1810.
6010 - Add Shared files ack. | This messages acknowledges that a call to message 6010
has finished processing.
9000 - Flash Mouse Click | Used to indicate a screen position was clicked if
when interactive flash mode is enabled.
*** Controlling Zoom Player (Commands generated by an external process and sent to Zoom Player):
The events listed below are only available when using the TCP/IP interface.
Commands that contain parameters should be space separated, for example:
"5100 fnPlay"
When issuing a command that contains multiple parameters, a comma is used to separate the parameters,
For example, "5110 exSetAR,1".
-------------------------------------+-------------------------------------------------------------------------------
0000 - Get Application Name | Returns 0000 message
0001 - Get Version | Returns 0001 message
0100 - Ping | Returns 0100 message
1000 - Get Play State | Returns 1000 message
1010 - Get Fullscreen State | Returns 1010 message
1100 - Set Timeline Updates (on/off) | 0 - Stop Media Position Update messages
1 - Start Media Position Update messages
2 - Resend Media Position Update messages
1110 - Get Current Duration | Returns 1110 message
1120 - Get Current Position | Returns 1120 message
1130 - Get Current Frame Rate (FPS) | Returns 1130 message
1140 - Get Estimated Frame Rate (FPS)| Returns 1140 message
1200 - Show a PopUp OSD Text | Parameter is a UTF8 encoded text to be
shown as a PopUp OSD
1201 - Temp Disable PopUp OSD | Temporarily Disables the PopUp OSD
1202 - Re-Enable PopUp OSD | Re-Enables the PopUp OSD
1210 - Set OSD "Visible" Duration | Value in Seconds
1300 - Get Play Mode | Returns 1300 message
1400 - Request DVD Title | Returns 1400 message
1401 - Request DVD Title Count | Returns 1401 message
1420 - Request DVD Menu Mode | Returns 1420 message
1450 - Request DVD Unique String | Returns 1450 message
1500 - Request DVD Chapter | Returns 1500 message
1501 - Request DVD Chapter Count | Returns 1501 message
1600 - Request Audio Track | Returns 1600 message
1601 - Request Audio Track Count | Returns 1601 message
1602 - Request DVD Audio Names | Returns 1602 message
1603 - Set Audio Track | Set the active Audio Track
Valid DVD values are 0-7 or 15 for default track
1700 - Request Subtitle Index | Returns 1700 message
1701 - Request Subtitle Count | Returns 1701 message
1702 - Request DVD Subtitle Names | Returns 1702 message
1703 - Set Subtitle Track | Set the DVD's Subtitle Track
Valid values 0-31, also enables subtitle
1704 - Hide Subtitles | Disable Subtitles from showing
1750 - Request DVD Angle | Returns 1750 message
1751 - Request DVD Angle Count | Returns 1751 message
1753 - Set DVD Angle | Set the DVD's Angle
Valid Values 1-9
1800 - Request Playing File Name | Returns 1800 message
1810 - Request Playlist | Returns 1810 message
1811 - Request Playlist Count | Returns 1811 message
1850 - Play File | Play a Media File, Value is a UTF8 encoded
string containing the file name.
1852 - Close Media File | Closes the playing media file or stops a DVD in DVD Mode.
1860 - Browse Web | Browse a web page, Value is the web address (URL)
1900 - Get Playlist Index | Returns 1900 message
1910 - Set Playlist Index | Value from 0 to Number items in
the playlist-1 (plays the file in index).
1920 - Clear Playlist | Clears the Current Playlist
(will close any playing file)
1930 - Add Playlist File | Add a file to the Playlist
1940 - Select Playlist Item | Select an Item in the Playlist
Value from 0 to Number items in
the playlist-1.
1941 - DeSelect Playlist Item | Remove selection of a Playlist item
Value from 0 to Number items in
the playlist-1.
1950 - Remove Playlist Item | Remove a Playlist item from the list
Value from 0 to Number items in
the playlist-1.
Returns both an 1950 and 1900 message.
2200 - Request AR Mode | Request the current ZP AR Mode
2210 - Request DVD AR Mode | Request the DVD AR Mode (see outgoing #2210)
2300 - Request Audio Volume | Request the Audio Volume Level
2600 - Set Derived Mode Aspect Ratio | Sets the aspect ratio used for Derived Aspect Ratio
mode for the currentply playing video. The aspect
ratio is specified as:
"Width Ratio"+"Height Ratio" left shifted 16 bits.
For Example, 16:9 would be "16+9*65536" or "16+9<<16"
or "16+(9 shl 16)" (the examples do the same thing
in a different syntax).
2610 - Set Video Display Area X-Ofs | Integer Value.
2611 - Get Video Display Area X-Ofs | Integer Value (Returns 2611 message).
2620 - Set Video Display Area Y-Ofs | Integer Value.
2621 - Get Video Display Area Y-Ofs | Integer Value (Returns 2621 message).
2630 - Set Video Display Area Width | Integer Value.
2631 - Get Video Display Area Width | Integer Value (Returns 2631 message).
2640 - Set Video Display Area Height | Integer Value.
2641 - Get Video Display Area Height | Integer Value (Returns 2641 message).
2650 - Set Player Window dimensions | Integer Values representing the Left,Top,Width,Height position
of the player window. For example: 50,50,800,600
2660 - Set Player on-top value | 0 = Standard window mode
1 = Player window is on-top of other windows
2670 - Set Fullscreen Monitor | 0 = Monitor where the player window is displayed
1 = Monitor #1
2 = Monitor #2
3 = Monitor #3...
2700 - Get Play Rate | Returns 2700 message.
2701 - Set Play Rate | Set the Media Mode Fast Play/Slow Motion rate or
the DVD Mode Fast Forward/Slow Motion/ Rewind rate.
Value is an integer representing the play rate multiplied
by 1000. For example a value of "500" means a play rate of "0.5".
Do not use negative values in media mode, it will not work.
Fast Play in media mode has a speed restriction a bit over "2.0"
unless Reclock is used as the audio renderer (this is a microsoft
limitation due to sound driver architecture).
2710 - Get Random Play Mode | Returns a 2710 message.
3000 - Dismiss ZP Error | Close the ZP Error message (if visible).
4000 - Virtual Keyboard Input Query | Pop up the Virtual Keyboard interface to ask the user to input
a text string.
This message requires three UTF8 encoded text string parameters.
The first parameter indicates a unique identifier which is returned
to you in the callback message, which will help you identify which
message prompted the user for input.
The second parameter populates the text entry field with the specified
text (you can leave this empty if you want an empty text input value.
The third parameter is used to query the user for the type of input
required.
For example:
"4000 eMail||Enter your eMail address"
or to include an existing text:
"4000 eMail|no@one.org|Enter your eMail address"
The result is returned in a 4000 message indicating failure/success,
the unique identfier and the text entered. The entered text is returned
even in the case where the user selected to cancel the operation.
5000 - Set Current Position | Sets the Current Play Position (in seconds.ms)
| For example "122.500" will seek to 2min:2sec.500ms
5010 - Play DVD Title | Plays a DVD Title (depends on DVD Navigation
accepting the title).
5020 - Play DVD Title,Chapter | Same as 5010, Plays a DVD Title at a specific
chapter, value of "1,5" plays Title #1, Chapter #5
(without the "" of course).
5030 - Play DVD Chapter | Same as 5010, Plays a DVD Chapter in the
current Title.
5100 - Call ZP Function | Calls a Zoom Player function
by name (see skinning tutorial for list)
5110 - Call ZP ExFunction | Calls a Zoom Player extended function
by name (see skinning tutorial for list)
Format "exFunctionName,Value"
5120 - Call ZP ScanCode | Pass a keyboard scancode number to the
Zoom Player Interperter (such as VK_DOWN),
this can be used to access the Navigator
interfaces, pass the scancode as a parameter.
5130 - Call ZP nvFunction | Calls a Zoom Player navigation function
by name (see skinning tutorial for list)
6000 - List Shared Folder | Lists the content of the shared folder specified by the "/SharePath:[Path]"
Command Line Parameter. If no value is specified, the root path is returned,
if a path is specified, the content of the path (under the shared folder)
is returned. Please note that for security reasons, paths can't begin with
the ".", "/" or "\" character and may not include any invalid character in
the path's body (such as "|").
For Example:
"6000 TV\Wednesday\"
If the "/SharePath" parameter is not specified, an empty message is returned.
6010 - Add Shared files to Playlist | Accept a list of file names separated by the "|" characters as the new playlist.
The file names are appended to the end of the playlist and a 6010 message is fired
off to ackknowledge that processing has ended.
The 'SharePath' value is automatically added to the path of each file.
For example:
"6010 MyVideo.avi|MP3\MyAudio.mp3"
With this example and 'SharePath' specified as "/SharePath:X:\Content\",
Zoom Player will add the files to the playlist as:
X:\Content\MyVideo.avi
X:\Content\MP3\MyAudio.mp3
*** Simplified Inter-Process Win32 Control:
Use the WinAPI "SendMessage" command to send Zoom Player a control command. The values listed below are passed
in the "LParam" field (the values are in HEX).
The return value of the event contains an integer value with the current state (with the exception of
"ZP_GetFileName" which returns an ATOM string containing the file name (make sure to deallocate the atom string).
[ WinAPI Message Number : WM_APP + 50 ]
ZP_GetFileName = 0x1000; // Returns the Currently Playing file name
ZP_GetDuration = 0x1010; // Returns the playing media length
ZP_GetPosition = 0x1020; // Returns the current play position
ZP_GetMode = 0x1030; // Returns the current Play Mode (DVD, Media or Audio)
ZP_GetState = 0x1040; // Retruns the current Play State (Closed, Stopped, Paused, Playing)
ZP_GetPlayIndex = 0x1050; // Returns the current (Playlist) Playing Item Index
ZP_VolumeLevel = 0x1060; // Returns the current Audio Volume Level
ZP_SetPosition = 0x5000; // Set current position (WParam specifies the value in Seconds)
ZP_CallFunction = 0x5010; // Call a Zoom Player function (WParam contains an ATOM string listing
// the function name). The Function Names can be found here:
// http://inmatrix.com/zplayer/highlights/zpfunctions.shtml
ZP_CallExFunction = 0x5020; // Call a Zoom Player extended function (WParam is an ATOM string listing the
// extended function name
// The string should be listed as "[function],[value]", for example:
// "exSetAR,2" (don't include the "" in the string)
[ WinAPI Message Number : WM_APP + 49 ]
ZP_CallFunctionIndex = 0x0000; // WParam holds a specific function number
// The Function Numbers can be found here:
// http://inmatrix.com/zplayer/highlights/zpfunctions.shtml
ZP_ScanCode = 0x0001; // WParam holds a keyboard scancode
ZP_AltScanCode = 0x0002; // WParam holds a keyboard scancode with ALT pressed
ZP_CtrlScanCode = 0x0003; // WParam holds a keyboard scancode with CTRL pressed
ZP_ShiftScanCode = 0x0004; // WParam holds a keyboard scancode with SHIFT pressed
ZP_AltShiftScanCode = 0x0005; // WParam holds a keyboard scancode with ALT+SHIFT pressed
ZP_AltCtrlScanCode = 0x0006; // WParam holds a keyboard scancode with ALT+CTRL pressed
ZP_CtrlShiftScanCode = 0x0007; // WParam holds a keyboard scancode with CTRL+SHIFT pressed
ZP_ASCScanCode = 0x0008; // WParam holds a keyboard scancode with ALT+SHIFT+CTRL pressed
ZP_MWAction = 0x0064; // WParam Value :
// 0 = Mouse Middle Button Click
// 1 = Mouse Wheel Up
// 2 = Mouse Wheel Down
Some functions require you to pass an ATOM string to Zoom Player. Use the WinAPI "GlobalAddAtom" function to create
the ATOM and pass it through the WParam parameter. Zoom Player will clear any ATOM string it receives.
*** Using the Command Line Interface:
The Zoom Player command line interface is quite powerful and allows you to control the action without any
programming experience.
Some parameters can be used even if Zoom Player is already running as long as you are not running multiple instances
of the player (other parameters only have an affect on the initial run).
For the full command line parameter list, visit the Zoom Player on-line help at:
http://inmatrix.com/zplayer/parameters.shtml
*** License:
The Zoom Player Communication and Control interface may only be used commercially under a direct license with
Inmatrix LTD.
All rights reserved Inmatrix LTD.
About
This project demonstrates how to remotely communicate and control Zoom Player over a TCP/IP connection.
Topics
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published