diff options
author | Aman Karmani <aman@tmm1.net> | 2020-12-16 12:40:16 -0800 |
---|---|---|
committer | Aman Karmani <aman@tmm1.net> | 2020-12-28 14:08:44 -0800 |
commit | 98b76bb11f3d2bfb0f12373e9930c11ee48e8940 (patch) | |
tree | d4ecfb8d4fc4da3304968d2aadf30d59341ee5fb /libavformat/rtsp.h | |
parent | 292e41ce650a7b5ca5de4ae87fff0d6a90d9fc97 (diff) | |
download | ffmpeg-98b76bb11f3d2bfb0f12373e9930c11ee48e8940.tar.gz |
avformat/rtsp: add support for satip://
The SAT>IP protocol[1] is similar to RTSP. However SAT>IP servers
are assumed to speak only MP2T, so DESCRIBE is not used in the same
way. When no streams are active, DESCRIBE will return 404 according
to the spec (see section 3.5.7). When streams are active, DESCRIBE
will return a list of all current streams along with information
about their signal strengths.
Previously, attemping to use ffmpeg with a rtsp:// url that points
to a SAT>IP server would work with some devices, but fail due to 404
response on others. Further, if the SAT>IP server was already
streaming, ffmpeg would incorrectly consume the DESCRIBE SDP response
and join an existing tuner instead of requesting a new session with
the URL provided by the user. These issues have been noted by many
users across the internet[2][3][4].
This commit adds proper spec-compliant support for SAT>IP, including:
- support for the satip:// psuedo-protocol[5]
- avoiding the use of DESCRIBE
- parsing and consuming the com.ses.streamID response header
- using "Transport: RTP/AVP;unicast" because the optional "/UDP"
suffix confuses some servers
This patch has been validated against multiple SAT>IP vendor devices:
- Telestar Digibit R2
(https://telestar.de/en/produkt/digibit-r1-2/)
- Kathrein EXIP 418
(https://www.kathrein-ds.com/en/produkte/sat-zf-verteiltechnik/sat-ip/227/exip-418)
- Kathrein EXIP 4124
(https://www.kathrein-ds.com/en/products/sat-if-signal-distribution/sat-ip/226/exip-4124)
- Megasat MEG-8000
(https://www.megasat.tv/produkt/sat-ip-server-3/)
- Megasat Twin
(https://www.megasat.tv/en/produkt/sat-ip-server-twin/)
- Triax TSS 400
(https://www.conrad.com/p/triax-tss-400-mkii-sat-ip-server-595256)
[1] https://www.satip.info/sites/satip/files/resource/satip_specification_version_1_2_2.pdf
[2] https://stackoverflow.com/questions/61194344/does-ffmpeg-violate-the-satip-specification-describe-syntax
[3] https://github.com/kodi-pvr/pvr.iptvsimple/issues/196
[4] https://forum.kodi.tv/showthread.php?tid=359072&pid=2995884#pid2995884
[5] https://www.satip.info/resources/channel-lists/
Diffstat (limited to 'libavformat/rtsp.h')
-rw-r--r-- | libavformat/rtsp.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index b74cdc148a..239ea8a0eb 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -188,6 +188,11 @@ typedef struct RTSPMessageHeader { * Content type header */ char content_type[64]; + + /** + * SAT>IP com.ses.streamID header + */ + char stream_id[64]; } RTSPMessageHeader; /** @@ -210,6 +215,7 @@ enum RTSPServerType { RTSP_SERVER_RTP, /**< Standards-compliant RTP-server */ RTSP_SERVER_REAL, /**< Realmedia-style server */ RTSP_SERVER_WMS, /**< Windows Media server */ + RTSP_SERVER_SATIP,/**< SAT>IP server */ RTSP_SERVER_NB }; |