Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMAF Ingest #206

Merged
merged 20 commits into from
Aug 14, 2024
Merged

CMAF Ingest #206

merged 20 commits into from
Aug 14, 2024

Conversation

tobbee
Copy link
Contributor

@tobbee tobbee commented Jul 1, 2024

This is an ongoing implementation of CMAF-Ingest role for livesim2.

It provides a REST API at /api/docs/](http://localhost:8888/api/docs#/ for creating CMAF Ingest sessions
that sends segments to a provided URL on a server. The segments will be sent as the right wall-clock-time is reached. There is also a test mode where one can trigger each segment. That is used in unit-test, but can also be done via the REST API.

One can start a session via the exposed API in the browser, or via curl as

curl --request POST \
  --url http://localhost:8888/api/cmaf-ingests \
  --header 'Accept: application/json, application/problem+json' \
  --header 'Content-Type: application/json' \
  --data '{
  "destination": "http://localhost:8080/upload",
  "duration": 20,
  "livesimURL": "/livesim2/testpic_2s/Manifest.mpd"
  }'

There is also a receiving server at cmd/cmaf-ingest-receiver. It can receive a stream livesim2 but
also from AWS Media Live.

Implementation status

  • Streams and Segment push URLs
  • Btrt box insertion and interpretation
  • Kind box insertion and interpretation for role
  • Receiver MPD generation from segments alone
  • Receiver pruning depending on time
  • stpp and wvtt subtitle support
  • Basic Auth authentication per stream
  • lmsg for time-limited generation
  • A cmaf-ingest-receiver component to receive the streams
  • Receiver support for PUT and POST requests
  • Receiver configuration of buffer duration (timeShiftBufferDepth)
  • Receiver storage of metadata track
  • Receiver generation of a simple dynamic DASH MPD with SegmentTemplate + Number
  • Receiver pruning of stored segments

Also see #201 for requirements.

@tobbee tobbee added the enhancement New feature or request label Jul 1, 2024
@tobbee tobbee self-assigned this Jul 1, 2024
@tobbee tobbee force-pushed the cmaf-ingest branch 2 times, most recently from 0de3cf9 to f76fc1f Compare July 16, 2024 10:12
@tobbee tobbee force-pushed the cmaf-ingest branch 3 times, most recently from 1494e60 to 7df0a7e Compare July 16, 2024 10:34
@tobbee tobbee force-pushed the cmaf-ingest branch 4 times, most recently from 961c010 to a1b901b Compare July 30, 2024 21:11
… ingest generation.

Both Streams and segment-based URLs are supported.
The receiver only looks at segments to generate an MPD.
@tobbee tobbee marked this pull request as ready for review August 14, 2024 11:25
@tobbee tobbee merged commit 7c3505d into main Aug 14, 2024
4 checks passed
@tobbee tobbee deleted the cmaf-ingest branch August 14, 2024 11:26
@tobbee tobbee mentioned this pull request Aug 14, 2024
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant