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.
 |