Update custom manifest documentation regarding audioTracks

This commit is contained in:
Xaekai 2022-02-12 23:07:20 -08:00 committed by Calvin Montgomery
parent f185e6c3ea
commit fd9586e0da
1 changed files with 34 additions and 3 deletions

View File

@ -1,7 +1,7 @@
CyTube Custom Content Metadata CyTube Custom Content Metadata
============================== ==============================
*Last updated: 2019-05-05* *Last updated: 2022-02-12*
## Purpose ## ## Purpose ##
@ -61,6 +61,8 @@ To add custom content, the user provides a JSON object with the following keys:
playlist, but this functionality may be offered in the future. playlist, but this functionality may be offered in the future.
* `sources`: A nonempty list of playable sources for the content. The format * `sources`: A nonempty list of playable sources for the content. The format
is described below. is described below.
* `audioTracks`: An optional list of audio tracks for using demuxed audio
and providing multiple audio selections. The format is described below.
* `textTracks`: An optional list of text tracks for subtitles or closed * `textTracks`: An optional list of text tracks for subtitles or closed
captioning. The format is described below. captioning. The format is described below.
@ -99,19 +101,46 @@ The following MIME types are accepted for the `contentType` field:
RTMP streams are only supported through the existing `rt:` media RTMP streams are only supported through the existing `rt:` media
type. type.
* `audio/aac` * `audio/aac`
* `audio/ogg` * `audio/mp4`
* `audio/mpeg` * `audio/mpeg`
* `audio/ogg`
Other audio or video formats, such as AVI, MKV, and FLAC, are not supported due Other audio or video formats, such as AVI, MKV, and FLAC, are not supported due
to lack of common support across browsers for playing these formats. For more to lack of common support across browsers for playing these formats. For more
information, refer to information, refer to
[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats#Browser_compatibility). [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats#Browser_compatibility).
### Audio Track Format ###
Each audio track entry is a JSON object with the following keys:
* `label`: A label for the audio track. This is displayed in the menu for the
viewer to select a text track.
* `language`: A two or three letter IETF BCP 47 subtype code indicating the
language of the audio track.
* `url`: A valid URL that browsers can use to retrieve the track. The URL
must resolve to a publicly-routed IP address, and must use the `https:` scheme.
* `contentType`: A string representing the MIME type of the track at `url`.
Any type starting with `audio` from the list above is acceptable. However
the usage of audio/aac is known to cause audio syncrhonization problems
for some users. It is recommended to use an m4a file to wrap aac streams.
**Important note regarding audio tracks:**
Because of browsers trying to be too smart for their own good, you should
include a silent audio stream in the video sources when using separate audio
tracks. If you do not, the browser will automatically pause the video whenever
the browser detects the page as not visible. There is no way to instruct it to
not do so. You can readily accomplish the inclusion of a silent audio track
with ffmpeg using the anullsrc filter like so:
`ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -i input.mp4 -c:v copy -c:a aac -shortest output.mp4`
It is recommended to match the sample rate and codec you intend to use in your
audioTracks in your silent track.
### Text Track Format ### ### Text Track Format ###
Each text track entry is a JSON object with the following keys: Each text track entry is a JSON object with the following keys:
* `url`: A valid URL that browsers can use to retrieve the track. The URL * `url`: A valid URL that browsers can use to retrieve the track. The URL
must resolve to a publicly-routed IP address, and must the `https:` scheme. must resolve to a publicly-routed IP address, and must the `https:` scheme.
* `contentType`: A string representing the MIME type of the track at `url`. * `contentType`: A string representing the MIME type of the track at `url`.
@ -177,3 +206,5 @@ non-exhaustive.
to the browser. to the browser.
* The manifest includes source URLs or text track URLs with expiration times, * The manifest includes source URLs or text track URLs with expiration times,
session IDs, etc. in the URL querystring. session IDs, etc. in the URL querystring.
* The manifest provides source URLs with non-silent audio as well as a list
of audioTracks.