diff --git a/docs/NMOS With MPEG TS.md b/docs/NMOS With MPEG TS.md index 8b0e0bc..55c08b3 100644 --- a/docs/NMOS With MPEG TS.md +++ b/docs/NMOS With MPEG TS.md @@ -9,7 +9,7 @@ _(c) AMWA 2024, CC Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)_ [MPEG Transport Stream][MPEG-TS] is a standard digital container format specified in ISO/IEC 13818-1, widely used for transmission and storage of audio, video, and data. -SMPTE [ST 2022-2][ST-2022-2] defines the Unidirectional Transport of Constant Bit Rate MPEG-2 Transport Streams on IP Networks. +SMPTE [ST 2022-2][ST-2022-2] defines the Unidirectional Transport of Constant Bit Rate MPEG-2 Transport Streams using RTP on IP Networks. The [Video Services Forum][VSF] developed Technical Recommendations [TR-01][TR-01] and [TR-07][TR-07], which cover the encapsulation of JPEG 2000 and JPEG XS video respectively within MPEG TS over IP networks, compliant with ST 2022-2. @@ -45,46 +45,27 @@ The Source is therefore unaffected by the use of MPEG TS or the encapsulated con ### Flows The Flow resource **MUST** indicate `video/MP2T` in the `media_type` attribute, and `urn:x-nmos:format:mux` for the `format`. -This has been permitted since IS-04 v1.1. - -For Nodes implementing IS-04 v1.3.x or higher, the following additional attributes defined in the [Flow Attributes register][Flow-Attributes] of the NMOS Parameter Registers are used for MPEG TS: +For Nodes implementing IS-04 v1.3 or higher, the following additional attributes defined in the [Flow Attributes register][Flow-Attributes] of the NMOS Parameter Registers are used for MPEG TS: - [Bit Rate][Flow-Bit-Rate] This attribute **MUST** be present in the flow resource definition. -- [Mux Video Media Type][Flow-Mux-Video-Media-Type] - The `mux_video_media_type` attribute **MUST** be included for streams encapsulating TR-01 JPEG 2000 or TR-07 JPEG XS. The `mux_video_media_type` **SHALL** use media types from the [IANA Media Types Registry][IANA-MIME-Types]: `video/jpeg2000` and `video/jxsv`. - An example Flow resource is provided in the [Examples](../examples/). ### Senders -For Nodes transmitting MPEG TS over RTP transport as defined by ST 2022-2, the Sender `transport` attribute **MUST** be `urn:x-nmos:transport:rtp`. - -Sender resources provide no indication of media type or bit-rate since this is described by the associated Flow resource. - -#### Sender SDP Usage -This section is **REQUIRED** for RTP transports with SDP. +For Nodes transmitting MPEG TS over RTP transport as defined by ST 2022-2, the Sender `transport` attribute **MUST** be `urn:x-nmos:transport:rtp` or one of its sub-classifications. The SDP file published at the `manifest_href` end-point **MUST** comply with the IS-05 usage guidelines for the specific transport and [RFC 4566][RFC-4566] -Additionally, the SDP transport file needs to convey, so far as the defined format-specific parameters allow, the same information about the stream as conveyed by the Source, Flow and Sender attributes defined by this specification and IS-04, unless such information is conveyed through in-band parameter sets. - -- The `bit_rate` attribute **MUST** be included to signal the max bit rate allocated to this sender. -- For streams encapsulating TR-01 JPEG 2000 or TR-07 JPEG XS, the `mux_video_media_type` attribute **MUST** be included as defined above. - -The sender attributes described above **MUST** be present in the SDP for transports where SDP is present. - An example Sender resource is provided in the [Examples](../examples/). ## MPEG TS IS-04 Receivers Nodes capable of receiving MPEG TS streams, including those carrying JPEG 2000 or JPEG XS content as per VSF TR-01 and TR-07, **MUST** have a Receiver resource in the IS-04 Node API, which lists `video/MP2T` in the `media_types` array within the `caps` object. -This has been permitted since IS-04 v1.1. +If the Receiver supports RTP transport, it **MUST** have the `transport` attribute set to `urn:x-nmos:transport:rtp` or one of its sub-classifications.. -If the Receiver supports RTP transport, it **MUST** have the `transport` attribute set to `urn:x-nmos:transport:rtp`. - -If the Receiver has limitations on or preferences regarding the MPEG TS streams or the encapsulated content that it supports, the Receiver resource **MUST** indicate constraints in accordance with the [BCP-004-01][] Receiver Capabilities specification. +If the Receiver has limitations on or preferences regarding the MPEG TS streams that it supports, the Receiver resource **MUST** indicate constraints in accordance with the [BCP-004-01][] Receiver Capabilities specification. The Receiver **SHOULD** express its constraints as precisely as possible, to allow a Controller to determine with a high level of confidence the Receiver's compatibility with the available streams. @@ -94,7 +75,6 @@ The `constraint_sets` parameter within the `caps` object can be used to describe The following parameter constraints can be used to express limitations on MPEG TS streams: - [Transport Bit Rate][Cap-Bit-Rate] -- [Mux Video Media Type][Cap-Mux-Video-Media-Type] An example Receiver resource is provided in the [Examples](../examples/). @@ -102,16 +82,7 @@ An example Receiver resource is provided in the [Examples](../examples/). Connection Management using IS-05 proceeds in exactly the same manner as for any other stream format carried over the RTP tranport type. -### Sender SDP Signalling -If an SDP file is published at the **/transportfile** end-point it **MUST** comply with the IS-05 usage guidelines for the RTP transport and [RFC 4566][RFC-4566] - -The SDP file **MUST** comply with the same requirements described for the SDP file at the IS-04 Sender `manifest_href` as described in the [IS-04 Sender SDP Usage](#sender-sdp-usage) section. - -If the Receiver is not capable of consuming the stream described by the SDP file, it **SHOULD** reject the request. - -If it is unable to assess the stream compatibility, for example when the SDP file does not include some of the optional parameters, it **MAY** accept the request. - -A `PATCH` request on the **/staged** endpoint of an IS-05 Receiver can contain an SDP file in the `transport_file` attribute. +Any SDP file published at the **/transportfile** end-point **MUST** comply with the IS-05 usage guidelines for the RTP transport and [RFC 4566][RFC-4566]. An example SDP file is provided in the [Examples](../examples/). @@ -119,10 +90,6 @@ An example SDP file is provided in the [Examples](../examples/). Controllers **MUST** use IS-04 to discover MPEG TS Senders and Receivers and IS-05 to manage connections between them. -Controllers **MUST** support IS-04 v1.3.x to implement all aspects of this specification. - -Partial implementation can be achieved using IS-04 v1.2 and earlier. - Controllers **MUST** support the BCP-004-01 Receiver Capabilities mechanism and all the parameter constraints listed in this specification in order to evaluate the stream compatibility between MPEG TS Senders and Receivers. Controllers **MUST** be capable of handling RTP transports as per the NMOS specifications indicated in the Sender and Receiver resources. @@ -133,19 +100,13 @@ Controllers **MUST** be capable of handling RTP transports as per the NMOS speci [TR-07]: https://vsf.tv/download/technical_recommendations/VSF_TR-07_2020-04-01.pdf "VSF TR-07 Transport of JPEG XS Video in MPEG-2 TS over RTP" [VSF]: https://vsf.tv/ "Video Services Forum" [RFC-2119]: https://datatracker.ietf.org/doc/html/rfc2119 "Key words for use in RFCs" -[RFC-3550]: https://datatracker.ietf.org/doc/html/rfc3550 "RTP: A Transport Protocol for Real-Time Applications" [RFC-3555]: https://datatracker.ietf.org/doc/html/rfc3555 "MIME Type Registration of RTP Payload Types" -[IS-04]: https://specs.amwa.tv/is-04/ "AMWA IS-04 NMOS Discovery and Registration Specification" -[IS-05]: https://specs.amwa.tv/is-05/ "AMWA IS-05 NMOS Device Connection Management Specification" -[NMOS Parameter Registers]: https://specs.amwa.tv/nmos-parameter-registers/ "Common parameter values for AMWA NMOS Specifications" [ST-2022-2]: https://ieeexplore.ieee.org/document/7291602 "SMPTE ST 2022-2: Unidirectional Transport of Constant Bit Rate MPEG-2 Transport Streams on IP Networks" [RFC-4566]: https://datatracker.ietf.org/doc/html/rfc4566 "SDP: Session Description Protocol" [NMOS-Glossary]: https://specs.amwa.tv/nmos/main/docs/Glossary.html "NMOS Glossary" [Capabilities-Register]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/capabilities/ "Capabilities Register" [Flow-Attributes]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/flow-attributes/ "Flow Attributes Register" [Flow-Bit-Rate]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/flow-attributes/#bit-rate "Flow Bit Rate" -[Flow-Mux-Video-Media-Type]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/flow-attributes/#mux_video_media_type "Mux Video Media Type" -[Cap-Mux-Video-Media-Type]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/capabilities/#mux_video_media_type "Mux Video Media Type" [Cap-Bit-Rate]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/capabilities/#transport-bit-rate "Transport Bit Rate" -[Cap-Stream-ID]: https://specs.amwa.tv/nmos-parameter-registers/branches/main/capabilities/#transport-stream-id "Transport Stream ID" -[IANA-MIME-Types]: https://www.iana.org/assignments/media-types "IANA Media Types" + + diff --git a/examples/README.md b/examples/README.md index 0b0a8f0..dc343ae 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,6 +1,6 @@ This directory is for examples -* [Flow resource example](flow_resource_jpeg_xs.json) -* [Sender resource example](sender_resource_jpeg_2k.json) -* [Receiver resource example](receiver_resource_jpeg_xs.json) -* [SDP resource example](mpeg_ts_j2k_rtp.sdp) +* [Flow resource example](flow_resource.json) +* [Sender resource example](sender_resource.json) +* [Receiver resource example](receiver_resource.json) +* [SDP resource example](mpeg_ts_rtp.sdp) diff --git a/examples/flow_resource.json b/examples/flow_resource.json new file mode 100644 index 0000000..6c81d54 --- /dev/null +++ b/examples/flow_resource.json @@ -0,0 +1,8 @@ +{ + "id": "144927fe-f0ce-449d-b261-3f011bd87352", + "label": "Example MPTS Flow", + "description": "An MPEG Transport Stream", + "format": "urn:x-nmos:format:mux", + "media_type": "video/MP2T", + "bit_rate": 20000 +} diff --git a/examples/flow_resource_jpeg_xs.json b/examples/flow_resource_jpeg_xs.json deleted file mode 100644 index af6715c..0000000 --- a/examples/flow_resource_jpeg_xs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "flow-5678", - "label": "Example MPTS Flow with JPEG XS", - "description": "A Multiple Program Transport Stream containing JPEG XS video.", - "format": "urn:x-nmos:format:mux", - "media_type": "video/MP2T", - "bit_rate": 20000, - "mux_video_media_type": "video/jxsv" -} diff --git a/examples/mpeg_ts_j2k_rtp.sdp b/examples/mpeg_ts_j2k_rtp.sdp deleted file mode 100644 index 6f56e22..0000000 --- a/examples/mpeg_ts_j2k_rtp.sdp +++ /dev/null @@ -1,11 +0,0 @@ -v=0 -o=- 2890844526 2890844526 IN IP4 192.168.1.1 -s=Example MPEG `transport` Stream -i=This is an example SDP file for an J2K MPEG-2 TS stream over RTP -c=IN IP4 239.255.0.1/32 -t=0 0 -m=video 5004 RTP/AVP 33 -a=source-filter: incl IN IP4 224.1.1.1 192.168.1.2 -a=rtpmap:33 MP2T/90000 -a=bit_rate:50000 -a=mux_video_media_type:video/jpeg2000 diff --git a/examples/mpeg_ts_rtp.sdp b/examples/mpeg_ts_rtp.sdp new file mode 100644 index 0000000..c7339c5 --- /dev/null +++ b/examples/mpeg_ts_rtp.sdp @@ -0,0 +1,9 @@ +v=0 +o=- 2890844526 2890844526 IN IP4 192.168.1.1 +s=Example MPEG transport stream +i=This is an example SDP file for MPEG-TS over RTP +c=IN IP4 239.255.0.1/32 +t=0 0 +m=video 5004 RTP/AVP 33 +a=source-filter: incl IN IP4 224.1.1.1 192.168.1.1 +a=rtpmap:33 MP2T/90000 diff --git a/examples/receiver_resource.json b/examples/receiver_resource.json new file mode 100644 index 0000000..7ebb9be --- /dev/null +++ b/examples/receiver_resource.json @@ -0,0 +1,14 @@ +{ + "id": "3526683d-7a7f-4a6a-9986-a86d1534a84f", + "label": "Example Receiver for MPEG TS", + "description": "A Receiver capable of consuming an MPEG TS over RTP.", + "media_types": ["video/MP2T"], + "transport": "urn:x-nmos:transport:rtp", + "caps": { + "constraint_sets": [ + { + "bit_rate": "20000" + } + ] + } +} diff --git a/examples/receiver_resource_jpeg_xs.json b/examples/receiver_resource_jpeg_xs.json deleted file mode 100644 index dbf0cba..0000000 --- a/examples/receiver_resource_jpeg_xs.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "id": "receiver-5678", - "label": "Example Receiver for MPTS with JPEG XS", - "description": "A Receiver capable of consuming a Multiple Program Transport Stream containing JPEG XS video over UDP.", - "media_types": ["video/MP2T"], - "transport": ["urn:x-nmos:transport:udp"], - "caps": { - "constraint_sets": [ - { - "bit_rate": "20000", - "mux_video_media_type": "video/jxsv" - } - ] - } -} diff --git a/examples/sender_resource.json b/examples/sender_resource.json new file mode 100644 index 0000000..65afe2a --- /dev/null +++ b/examples/sender_resource.json @@ -0,0 +1,8 @@ +{ + "id": "68d0f0a2-96f5-4b95-91d8-13743e5bdaba", + "label": "Example Sender for MPEG TS", + "description": "A Sender transmitting an MPEG TS over RTP.", + "flow_id": "144927fe-f0ce-449d-b261-3f011bd87352", + "transport": "urn:x-nmos:transport:rtp", + "manifest_href": "http://example.com/sdp/sender-1234.sdp" +} diff --git a/examples/sender_resource_jpeg_2k.json b/examples/sender_resource_jpeg_2k.json deleted file mode 100644 index 0aab8cf..0000000 --- a/examples/sender_resource_jpeg_2k.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "id": "sender-1234", - "label": "Example Sender for SPTS with JPEG 2000", - "description": "A Sender transmitting a Single Program Transport Stream containing JPEG 2000 video over RTP.", - "flow_id": "flow-1234", - "transport": "urn:x-nmos:transport:rtp", - "manifest_href": "http://example.com/sdp/sender-1234.sdp" -}