mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 17:16:51 +00:00
Initial revision
This commit is contained in:
139
PROTOCOL
Normal file
139
PROTOCOL
Normal file
@@ -0,0 +1,139 @@
|
||||
Written by: Sascha Volkenandt <sascha@akv-soft.de>
|
||||
|
||||
Project's homepage: http://www.magoa.net/linux/
|
||||
|
||||
Version: 0.0.3
|
||||
|
||||
Description:
|
||||
------------
|
||||
|
||||
I call this protocol "VTP", the Video Transfer Protocol. I hope that's not
|
||||
already claimed by someone ;).
|
||||
|
||||
This Protocol was created for Video Transfers over a Network. It is a text-
|
||||
based protocol like the FTP, and is used by a client to communicate with a
|
||||
server providing different types of video data, such as live streams,
|
||||
recordings or disc media. The basic communication consists of short text
|
||||
commands sent by the client, answered by numerical codes accompanied by
|
||||
human-readable messages. All messages should be finished by a full CR/LF
|
||||
line-ending, which should preferably written as "\015\012", as this is fully
|
||||
platform-independent. Nevertheless, a client or (especially) a server should
|
||||
also act on "\n" line-endings. The MPEG data is being transmitted over a
|
||||
separate data connection.
|
||||
|
||||
TODO:
|
||||
- PORT behaviour changed
|
||||
- TUNE syntax changed
|
||||
- connection IDs
|
||||
- new command PLAY
|
||||
|
||||
|
||||
Response Code Summary
|
||||
|
||||
Code Meaning
|
||||
220 Last command ok / connection ready
|
||||
221 Service is closing the connection afterwards
|
||||
500 The command was not recognized
|
||||
501 The parameters couldn't be interpreted correctly
|
||||
550 Action not taken, for various reason
|
||||
551 Action not taken, a subsequent connection was unsuccessful
|
||||
560 Live-Stream not available currently [changed in 0.0.3]
|
||||
561 Capability not known [new in 0.0.2]
|
||||
562 Pid currently not available [new in 0.0.3]
|
||||
563 Stream not available currently [new in 0.0.3]
|
||||
|
||||
|
||||
Command Reference
|
||||
|
||||
Command: Connect to VTP Server
|
||||
Responses: 220 - The server is ready
|
||||
Description: Upon connection to the server (which usually listens at port
|
||||
2004), the first thing the client has to expect is a welcome message with
|
||||
the "220" response code. The client may now send a CAPS command, to tell
|
||||
the server it's capabilities.
|
||||
|
||||
Command: CAPS <Capability>
|
||||
Responses: 220 - This capability is known and will be used from now on.
|
||||
561 - This capability is unknown, try anotherone
|
||||
Description: This command tells the server to serve media data in a specific
|
||||
format, like "PES" (for MPEG2-PES) or "TS" (for MPEG2-TS). A client can
|
||||
do several CAPS commands until the server accepts one. So a client should
|
||||
try all formats it can handle, descending from the most preffered one. If
|
||||
no such command is sent, streaming is defaulted to PES.
|
||||
Capabilities currently used:
|
||||
TS Transport Stream (all PIDs belonging to a channel)
|
||||
TSPIDS Only in conjunction with TS: Stream PIDs separately upon request
|
||||
(this enables the ADDP/DELP commands)
|
||||
PES Program Elementary stream (Video and primary Audio stream)
|
||||
[new in 0.0.2,updated in 0.0.3]
|
||||
|
||||
Command: PROV <Priority> <Media>
|
||||
Responses: 220 - Media available for receive
|
||||
501 - The parameters were incorrect
|
||||
550 - The media couldn't be identified
|
||||
560 - This server can currently not serve that media
|
||||
Description: With this command, the server is asked if the given media can
|
||||
be received. The Priority is a number between 0 and 100 (in case a media
|
||||
can not be received by an unlimited number of clients, the server shall
|
||||
grant higher priorities before lower ones, and it shall also quit streams
|
||||
with lower permissions if a higher one is requested), or -1 to ask the
|
||||
server if this media is available at all.
|
||||
The Media is a string defining the wanted media type. This is currently for
|
||||
free use, it could for example carry a VDR unique channel id, to specify
|
||||
a TV channel.
|
||||
|
||||
Command: PORT <Id> <Address and Port>
|
||||
Responses: 220 - The data connection was opened
|
||||
501 - The parameter list was wrong
|
||||
551 - The data connection was refused by the client or timed out
|
||||
Description: The PORT command tells the server the target of a following
|
||||
media transmission. The parameter Id specifies an index which is used to
|
||||
establish multiple data connections over one control connection. It is used
|
||||
later in the ABRT command to close a specific data connection. The second
|
||||
parameter argument has six comma-separated fields, of which the first four
|
||||
represent the target IP address, in the byte-order as the dot-notation
|
||||
would be printed. The last two fields represent the target port, with the
|
||||
high-byte first. To calculate the actual values, you could use the
|
||||
following:
|
||||
Field(5) = (RealPort & 0xFF00) shr 8
|
||||
Field(6) = RealPort & 0xFF
|
||||
Reversed:
|
||||
RealPort = (Field(5) shl 8) + Field(6)
|
||||
After receiving the port command, the data connection is opened but no data
|
||||
is transferred, yet.
|
||||
Id's currently used:
|
||||
0 Data connection for live streams
|
||||
1 Data connection for saved streams
|
||||
[changed in 0.0.3]
|
||||
|
||||
Command: TUNE <Priority> <Media>
|
||||
Responses: 220 - Data connection was opened successfully
|
||||
550 - The media couldn't be identified
|
||||
560 - The live stream is unavailable
|
||||
Description: This command tells the media server to start the transfer over a
|
||||
connection to a remote target established by the PORT command before.
|
||||
Please look at the PROV command for the meaning of the parameters. The
|
||||
server begins to send MPEG data. After the transfer has been started, the
|
||||
response code "220" is sent.
|
||||
|
||||
Command: ADDP <Pid>
|
||||
Responses: 220 - The requested Pid is transferring
|
||||
560 - The requested Pid is not available currently
|
||||
Description: This tells the server to start the transfer of a specific Pid
|
||||
over a data connection established by the PORT command before.
|
||||
|
||||
Command: DELP <Pid>
|
||||
Responses: 220 - The requested Pid is transferring
|
||||
560 - The requested Pid was not transferring
|
||||
Description: This tells the server to stop the transfer of a specific Pid
|
||||
enabled by DELP before.
|
||||
|
||||
Command: ABRT <Id>
|
||||
Responses: 220 - Data connection closed
|
||||
Description: This one should be sent before requesting another media or when
|
||||
a media isn't needed anymore. It terminates the data connection previously
|
||||
opened by PORT.
|
||||
|
||||
Command: QUIT
|
||||
Responses: 221 - Connection is being closed afterwards
|
||||
Description: This commands terminates the client connection.
|
Reference in New Issue
Block a user