mirror of
				https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
				synced 2023-10-10 17:16:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			140 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 |