5g-mag / rt-5gms-application Goto Github PK
View Code? Open in Web Editor NEW5G Media Streaming - 5GMS-Aware Applications
Home Page: https://www.5g-mag.com/streaming
License: Other
5G Media Streaming - 5GMS-Aware Applications
Home Page: https://www.5g-mag.com/streaming
License: Other
TR 103972 v1.1.1 Section 6.3.3.2 describes the service discovery procedure that a DVB-I client uses to discover the set of available DVB-I services. DVB-I services are described in a DVB-I service list.
For development and demonstration purposes, 5G-MAG should host a reference DVB-I Service List (for instance a Linode instance). The reference DVB-I Service List can contain new parameters related to 5G Media Streaming such as the 5GMS AF host address and the provisioning session ID (see Section 6.3.4).
As a demonstrator of the 5GMS-Aware Application, I would like to know which video representation is currently playing back.
The application should display the bit rate (and, if available, the representation ID string) of the currently selected video representation as part of the User Interface. This would ideally be overlaid on a corner of the rendered video window, or else somewhere nearby.
Hi 5G-MAG groups,
I encountered a failure when trying to compile the fivegmag_5GMSdAwareApplication on development branch. From the log shown as follows, it seems like it missed two packages. However, I haven't found any repo which provides the a5gmscommonlibrary
and a5gmsmediastreamhandler
.
Do you have any idea about this? Any input is appreciated.
╰─➤ ./gradlew assemble
> Task :app:checkDebugAarMetadata FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Could not find com.fivegmag:a5gmscommonlibrary:1.0.0.
Searched in the following locations:
- file:/home/z.cheng/.m2/repository/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
- https://dl.google.com/dl/android/maven2/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
- https://repo.maven.apache.org/maven2/com/fivegmag/a5gmscommonlibrary/1.0.0/a5gmscommonlibrary-1.0.0.pom
Required by:
project :app
> Could not find com.fivegmag:a5gmsmediastreamhandler:1.0.0.
Searched in the following locations:
- file:/home/z.cheng/.m2/repository/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
- https://dl.google.com/dl/android/maven2/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
- https://repo.maven.apache.org/maven2/com/fivegmag/a5gmsmediastreamhandler/1.0.0/a5gmsmediastreamhandler-1.0.0.pom
Required by:
project :app
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
2 actionable tasks: 1 executed, 1 up-to-date
As we are planning to provide the APK of the 5GMSd Aware Application for download via Linode or Github we would like to add the license and the copyright notes to the app. This can be done by adding a button for each of the items and showing the information after the user clicks on the button.
Feature description
The application should be able to use the M7d interface to start a streaming session and interact with the underlying mediaplayer/media stream handler implementation.
Relevant specifications and corresponding sections
26.501 - 5G Media Streaming (5GMS); General description and architecture (Release 17)
26.512 - 5G Media Streaming (5GMS); Protocols (Release 17)
Additional context
Add a Github action that runs a testbuild and the unit tests for pull requests against main
or development
.
TR 103972 v1.1.1 Section 6.3.3.2 describes the service discovery procedure that a DVB-I client uses to discover the set of available DVB-I services. This realizes the M8d service announcement procedure in the context of 5G Media Streaming.
Each service instance in the DVB-I Service List plays the role here of a Service Announcement at reference point M8d. As a consequence, the DVB-I Service List document needs to convey at minimum the baseline Service Access Information parameters, namely the available 5GMSd AF host address(es) and the Provisioning Session identifier of the 5GMSd downlink streaming service corresponding to the DVB-I service.
NOTE: The annotation of a DVB-I service instance with 5GMS baseline Service Access Information parameters
is identified as a gap in clause 6.3.4.
The 5GMSd Aware Application shall parse the DVB-I Service List and provide a list of the available services for selection by the user. This is similar to what is being done today using a JSON-based format (see Additional Context below). It is up to the implementation how to visualize the list of available services. Probably a dropdown menu is not optimal. Moreover, there should be an easy way to switch between DVB-I and JSON based service descriptions, both provided via interface M8.
Note: In this case we are assuming that the DVB-I client is integrated into the 5GMSd-Aware Application. It would also be possible that a dedicated DVB-I client launches the 5GMSd Aware Application once a service has been selected
The current implementation of the 5GMSd Aware Application uses a JSON based format at reference point M8:
{
"m5BaseUrl": "http://10.147.67.179:3003/3gpp-m5/v2/",
"serviceList": [
{
"provisioningSessionId": "3",
"name": "BBC",
"entryPoints": [
{
"locator": "https://rdmedia.bbc.co.uk/testcard/vod/manifests/avc-full.mpd",
"contentType": "application/dash+xml",
"profiles": [
"urn:mpeg:dash:profile:isoff-live:2011"
]
}
]
},
{
"provisioningSessionId": "3",
"name": "AWS",
"entryPoints": [
{
"locator": "https://d24rwxnt7vw9qb.cloudfront.net/v1/dash/e6d234965645b411ad572802b6c9d5a10799c9c1/All_Reference_Streams/4577dca5f8a44756875ab5cc913cd1f1/index.mpd",
"contentType": "application/dash+xml",
"profiles": [
"urn:mpeg:dash:profile:isoff-live:2011"
]
}
]
}
]
}
The 5GMS-Aware Application needs information from the 5GMS Application Provider in order to determine the Media Entry Point (MPD, master .m3u8) hosted on the 5GMS AS. This is provided by a proprietary protocol between the 5GMS Application Provider and the 5GMS-Aware Application using the interface at a reference point M8. The information conveyed via the interface at M8 is dependent on how the Application Provider wishes to manage the media assets. It is typically generated by a Content Management System (CMS) as part of a data feed that populates a content guide user experience.
The information provided via M8 can be used by the Application Provider in two distinct ways:
distributionConfiguration.entryPoint
objects, with relative path details, which are then provided as absolute entry points in the M5 Service Access Information.entryPoints
for a piece of mediadistributionConfiguration.entryPoint
objects in the ContentHostingConfiguration
. Entry points for individual VoD catalogue items or linear streams are provided via M8 and there may be multiple different media all using the same Provisioning Session.The information passed at interface at reference point M8 may also describe a mixture of these two approaches, with some media items having their own Provisioning Session and some sharing a common Provisioning Session.
For the use in the 5G-MAG examples we will come up with our own format for the messages at M8.
When a Provisioning Session is just for a single piece of media (possibly in multiple formats such as DASH and HLS) then the entry points for the media can be provided to the 5GMS Application Function via the ContentHostingConfiguration
, for example these two ContentHostingConfiguration
s (which for the sake of this example the Application Function will be attaching to Provisioning Sessions 2 & 3 respectively):
{
"name": "AMP Demo Stream: Big Buck Bunny",
"ingestConfiguration": {
"pull": true,
"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
"baseURL": "http://amssamples.streaming.mediaservices.windows.net/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/"
},
"distributionConfigurations": [
{
"domainNameAlias": "rt.5g-mag.com",
"entryPoint": {
"relativePath": "manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
},
{
"domainNameAlias": "rt.5g-mag.com",
"entryPoint": {
"relativePath": "manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
}
]
}
...and...
{
"name": "AMP Demo Stream: Caminandes: Llama Drama",
"ingestConfiguration": {
"pull": true,
"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
"baseURL": "http://amssamples.streaming.mediaservices.windows.net/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/"
},
"distributionConfigurations": [
{
"domainNameAlias": "rt.5g-mag.com",
"entryPoint": {
"relativePath": "manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
},
{
"domainNameAlias": "rt.5g-mag.com",
"entryPoint": {
"relativePath": "manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
}
]
}
This will then allow the 5GMS AF to provide Service Access Information for these two streams via the interface at reference point M5.
For the two examples these would be:
http://rt.5g-mag.com:7778/3gpp-m5/v2/service-access-information/2
{
"provisioningSessionId": "2",
"provisioningSessionType": "DOWNLINK",
"streamingAccess": {
"entryPoints": [
{
"locator": "http://rt.5g-mag.com/m4d/provisioning-session-2/manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
},
{
"locator": "http://rt.5g-mag.com/m4d/provisioning-session-2/manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
]
}
}
...and...
http://rt.5g-mag.com:7778/3gpp-m5/v2/service-access-information/3
{
"provisioningSessionId": "3",
"provisioningSessionType": "DOWNLINK",
"streamingAccess": {
"entryPoints": [
{
"locator": "http://rt.5g-mag.com/m4d/provisioning-session-3/manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
},
{
"locator": "http://rt.5g-mag.com/m4d/provisioning-session-3/manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
]
}
}
Because the entryPoints
are surfaced in the ServiceAccessInformation, which is retrieved by the Media Session Handler using the interface at reference point M5, it is not necessary to provide these entry points over M8.
Therefore the M8 information could look like:
{
"m5BaseUrl": "http://rt.5g-mag.com:7778/3gpp-m5/v2/",
"serviceList": [
{
"provisioningSessionId": "2",
"name": "AMP Demo Stream: Big Buck Bunny"
},
{
"provisioningSessionId": "3",
"name": "AMP Demo Stream: Caminandes: Llama Drama"
}
]
}
This allows the 5GMS-Aware Application to show the available stream names to the user, allowing them to select one for playback. Once selected the 5GMS-Aware Application will then ask the Media Session Handler to start media session handling for the selected Provisioning Session Id and start playback.
In this sequence, the Media Session Handler selects a suitable entryPoint
for the Media Stream Handler/Media Player and to ask it to play back that stream. The 5GMS-Aware Application could supply a preferred MIME content type and/or set of profiles as additional parameters to help the Media Session Handler choose a suitable Media Entry Point from those advertised in the Service Access Information.
Instead of establishing each piece of media as its own Provisioning Session (and for a VoD service there may be a few hundred thousand pieces of media) it is also possible in the framework for the Application Provider to set up a single Provisioning Session with a Content Hosting Configuration pointing to a top level URL path that can be used for multiple different media located underneath that top level. In this case the Content Hosting Configuration points to a media service rather than an individual piece of media. In such cases, the Content Hosting Configuration (and hence the Service Access Information) does not describe specific Media Entry Points.
For example (for the sake of this example we will attach this to Provisioning Session 1 in the Application Function):
{
"name": "Azure Media Player Sample Streams",
"ingestConfiguration": {
"pull": true,
"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
"baseURL": "http://amssamples.streaming.mediaservices.windows.net/"
},
"distributionConfigurations": [
{
"domainNameAlias": "rt.5g-mag.com"
}
]
}
The corresponding Service Access Information, provided by the 5GMS Application Function via the interface at reference point M5 would look like:
{
"provisioningSessionId": "1",
"provisioningSessionType": "DOWNLINK"
}
(The Service Access Information may also contain properties such as clientConsumptionReportingConfiguration
for consumption reporting of the media that is played back, so is still useful to the Media Session Handler)
Now in this case the M8 information needs to provide the entry points for each piece of media the 5GMS Aware Application will make available, therefore the M8 information could look like:
{
"m5BaseUrl": "http://rt.5g-mag.com:7778/3gpp-m5/v2/",
"serviceList": [
{
"provisioningSessionId": "1",
"name": "Big Buck Bunny",
"entryPoints": [
{
"locator": "http://rt.5g-mag.com/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
},
{
"locator": "http://rt.5g-mag.com/622b189f-ec39-43f2-93a2-201ac4e31ce1/BigBuckBunny.ism/manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
]
},
{
"provisioningSessionId": "1",
"name": "Caminandes: Llama Drama",
"entryPoints": [
{
"locator": "http://rt.5g-mag.com/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=mpd-time-csf)",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
},
{
"locator": "http://rt.5g-mag.com/634cd01c-6822-4630-8444-8dd6279f94c6/CaminandesLlamaDrama4K.ism/manifest(format=m3u8-aapl-v3)",
"contentType": "application/vnd.apple.mpegurl"
}
]
}
]
}
This M8 information contains multiple (in this case 2) media items all using the same Provisioning Session ID.
The 5GMS-Aware Application will present the media items to the user in much the same way it did for the Single media for a Provisioning Session case. When the user selects the media item for playback the 5GMS-Aware Application initialises the Media Session Handler with the Provisioning Session ID for the media. However, in this case it is up to the 5GMS-Aware Application to select a suitable Media Entry Point from the list provided over M8 and to request, via the Media Session Handler API at reference point M6 or directly via the Media Stream Handling API at reference point M7, that the Media Stream Handler (Media Player) begins playback.
26.501 - 5G Media Streaming (5GMS); General description and architecture (Release 17)
26.512 - 5G Media Streaming (5GMS); Protocols (Release 17)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.