-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Initial implemention of a push av server #36004
base: master
Are you sure you want to change the base?
Conversation
Review changes with SemanticDiff. Analyzed 4 of 8 files.
|
PR #36004: Size comparison from a7bbd7b to 2bc6170 Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
-f mp4 \ | ||
-frag_duration "$((1 * 1000 * 1000))" \ | ||
-min_frag_duration "$((1 * 1000 * 1000))" \ | ||
-write_prft wallclock \ | ||
-use_editlist 0 \ | ||
-movflags "+cmaf+dash+delay_moov+skip_sidx+skip_trailer+frag_custom" \ | ||
\ | ||
-method PUT \ | ||
-multiple_requests 1 \ | ||
-chunked_post 1 \ | ||
-send_expect_100 1 \ | ||
-headers "DASH-IF-Ingest: 1.1" \ | ||
-headers "Host: localhost:8080" \ | ||
-content_type "" \ | ||
-icy 0 \ | ||
-rw_timeout "$((200 * 1000 * 1000))" \ | ||
-reconnect 1 \ | ||
-reconnect_at_eof 1 \ | ||
-reconnect_on_network_error 1 \ | ||
-reconnect_on_http_error 4xx,5xx \ | ||
-reconnect_delay_max 2 \ | ||
-http_opts $HTTP_OPTS \ | ||
"$PUBLISHING_ENDPOINT/cmaf/example.str/Switching(video)/video-720p.cmfv" \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From the looks of this, this is generating non multiplexed tracks, aka video and audio are in seperate files instead of interleaved m4s / mp4 content.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed. I missed the "All content SHALL be sent as a single stream and track." section of the Matter spec and was basing that example of off the DASH Ingest one, which I think do not limit the number of files. Will modify the script to generate one stream instead.
A question that comes to me from having only one stream, do we want to have the ecosystem provide the complete url as opposed to only the base? That may simplify the implementation on the ecosystem implementation, but would also restrict the spec if we want to expand it to include multiple streams in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on my understanding of the DASH spec we are asking the ecosystem to provide the base URL and the camera then only appends the track name (always fixed since we are a single track) and segment number and file extension onto that to form the complete URL.
Right now the interleaved vs separate tracks is an enum in the spec that only defines interleaved (single track), so we have the ability to change in the future if we want.
Push AV Server implementation for cameras. This PR is currently a draft to gather early feedback from the camera tiger team. It is not intended to be merged as part of the Matter 1.4 release.
This PR introduce a new tool (
src/tools/push_av_server/server.py
) that offer a web server to test the PUSH AV Transport cluster. The tool also manage TLS certificates for both the server itself as well as the cameras uploading to it. The server can be interacted with via HTTP calls when used as a standalone tool (work on a UI is in progress) or via python functions when used as a module (mostly targeting the test harness).Note that test harness integration is mostly a work in progress at this point. The added test file in this PR is only intended as a guide (as well as to provide information onto how the tool can be used in that context) to help develop correct APIs and is not intended to be merged as part of this PR.
The web server provide few checks in term of validation for the ingested media. The idea is to have a server permissive enough that record as much information as possible, and then rely on the actual test to validate that the camera is working as it should.