You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Filters/dasher.md
+22-3
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@ This filter requires the graph resolver to be activated.
8
8
9
9
This filter provides segmentation and manifest generation for MPEG-DASH and HLS formats.
10
10
The segmenter currently supports:
11
+
11
12
- MPD and m3u8 generation (potentially in parallel)
12
13
- ISOBMFF, MPEG-2 TS, MKV and raw bitstream segment formats
13
14
- override of profiles and levels in manifest for codecs
@@ -43,6 +44,7 @@ Standard DASH replacement strings:
43
44
_Note: these strings are not replaced in the manifest templates elements._
44
45
45
46
Additional replacement strings (not DASH, not generic GPAC replacements but may occur multiple times in template):
47
+
46
48
* $Init=NAME$: replaced by NAME for init segment, ignored otherwise
47
49
* $XInit=NAME$: complete replace by NAME for init segment, ignored otherwise
48
50
* $InitExt=EXT$: replaced by EXT for init segment file extensions, ignored otherwise
@@ -51,10 +53,12 @@ Additional replacement strings (not DASH, not generic GPAC replacements but may
51
53
* $Segment=NAME$: replaced by NAME for media segments, ignored for init segments
52
54
* $SegExt=EXT$: replaced by EXT for media segment file extensions, ignored for init segments
53
55
* $FS$ (FileSuffix): replaced by `_trackN` in case the input is an AV multiplex, or kept empty otherwise
56
+
54
57
_Note: these strings are replaced in the manifest templates elements._
55
58
56
59
## PID assignment and configuration
57
-
To assign PIDs into periods and adaptation sets and configure the session, the segmenter looks for the following properties on each input PID:
60
+
To assign PIDs into periods and adaptation sets and configure the session, the segmenter looks for the following properties on each input PID:
61
+
58
62
*`Representation`: assigns representation ID to input PID. If not set, the default behavior is to have each media component in different adaptation sets. Setting the `Representation` allows explicit multiplexing of the source(s)
59
63
*`Period`: assigns period ID to input PID. If not set, the default behavior is to have all media in the same period with the same start time
60
64
*`PStart`: assigns period start. If not set, 0 is assumed, and periods appear in the Period ID declaration order. If negative, this gives the period order (-1 first, then -2 ...). If positive, this gives the true start time and will abort DASHing at period end
@@ -71,6 +75,7 @@ _Note: If multiple streams in source, only the first stream will have an AS ID a
71
75
*`CropOrigin`: indicates x and y coordinates of video for SRD (size is video size)
72
76
*`SRD`: indicates SRD position and size of video for SRD, ignored if `CropOrigin` is set
73
77
*`SRDRef`: indicates global width and height of SRD, ignored if `CropOrigin` is set
78
+
*`HLSPL`: name of variant playlist, can use templates
74
79
*`HLSMExt`: list of extensions to add to master playlist entries, ['foo','bar=val'] added as `,foo,bar=val`
75
80
*`HLSVExt`: list of extensions to add to variant playlist, ['#foo','#bar=val'] added as `#foo \n #bar=val`
76
81
* Non-dash properties: `Bitrate`, `SAR`, `Language`, `Width`, `Height`, `SampleRate`, `NumChannels`, `Language`, `ID`, `DependencyID`, `FPS`, `Interlaced`, `Codec`. These properties are used to setup each representation and can be overridden on input PIDs using the general PID property settings (cf global help).
@@ -135,9 +140,19 @@ This will layout the `v2` below `v1` using a global SRD size of 1280x720.
135
140
136
141
The segmenter will create multiplexing filter chains for each representation and will reassign PID IDs so that each media component (video, audio, ...) in an adaptation set has the same ID.
137
142
138
-
For HLS, the output PID will deliver the master playlist __and__ the variant playlists.
143
+
For HLS, the output manifest PID will deliver the master playlist __and__ the variant playlists.
139
144
The default variant playlist are $NAME_$N.m3u8, where $NAME is the radical of the output file name and $N is the 1-based index of the variant.
140
-
145
+
146
+
When HLS mode is enabled, the segment [template](#template) is relative to the variant playlist file, which can also be templated.
This will put video segments and playlist in `dash/video/` and audio segments and playlist in `dash/audio/`
154
+
155
+
141
156
## Segmentation
142
157
The default behavior of the segmenter is to estimate the theoretical start time of each segment based on target segment duration, and start a new segment when a packet with SAP type 1,2,3 or 4 with time greater than the theoretical time is found.
143
158
This behavior can be changed to find the best SAP packet around a segment theoretical boundary using [sbound](#sbound):
For low latency segmentation with fMP4, you will need to specify the following options:
181
+
166
182
* cdur: set the fMP4 fragment duration
167
183
* asto: set the availability time offset for DASH. This value should be equal or slightly greater than segment duration minus cdur
168
184
* llhls: enable low latency for HLS
@@ -211,12 +227,14 @@ The segmenter can take a list of instructions, or Cues, to use for the segmentat
211
227
212
228
Cue files can be specified for the entire segmenter, or per PID using `DashCue` property.
213
229
Cues are given in an XML file with a root element called <DASHCues>, with currently no attribute specified. The children are one or more <Stream> elements, with attributes:
230
+
214
231
* id: integer for stream/track/PID ID
215
232
* timescale: integer giving the units of following timestamps
216
233
* mode: if present and value is `edit`, the timestamp are in presentation time (edit list applied) otherwise they are in media time
217
234
* ts_offset: integer giving a value (in timescale) to subtract to the DTS/CTS values listed
218
235
219
236
The children of <Stream> are one or more <Cue> elements, with attributes:
237
+
220
238
* sample: integer giving the sample/frame number of a sample at which splitting shall happen
221
239
* dts: long integer giving the decoding time stamp of a sample at which splitting shall happen
222
240
* cts: long integer giving the composition / presentation time stamp of a sample at which splitting shall happen
@@ -238,6 +256,7 @@ The segmenter can be used to generate manifests from already fragmented ISOBMFF
238
256
In this case, segment boundaries are attached to each packet starting a segment and used to drive the segmentation.
239
257
This can be used with single-track ISOBMFF sources, either single file or multi file.
240
258
For single file source:
259
+
241
260
- if onDemand [profile](#profile) is requested, sources have to be formatted as a DASH self-initializing media segment with the proper sidx.
242
261
- templates are disabled.
243
262
-[sseg](#sseg) is forced for all profiles except onDemand ones.
Copy file name to clipboardExpand all lines: docs/Filters/nvdec.md
+3
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,9 @@ This filter may be automatically loaded during graph resolution.
8
8
This filter decodes MPEG-2, MPEG-4 Part 2, AVC|H264 and HEVC streams through NVidia decoder. It allows GPU frame dispatch or direct frame copy.
9
9
If the SDK is not available, the configuration key `nvdec@disabled` will be written in configuration file to avoid future load attempts.
10
10
11
+
The absolute path to cuda lib can be set using the `cuda_lib` option in `core` or `temp` section of the config file, e.g. `-cfg=temp:cuda_lib=PATH_TO_CUDA`.
12
+
The absolute path to cuvid lib can be set using the `cuvid_lib` option in `core` or `temp` section of the config file, e.g. `-cfg=temp:cuvid_lib=PATH_TO_CUDA`.
Copy file name to clipboardExpand all lines: docs/xmlformats/Common-Encryption.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -81,7 +81,7 @@ The following example shows a simple GPAC DRM system info:
81
81
*`selectiveType` : specifies how selective encryption is to be used. The possible values are:
82
82
***None** : no selective encryption, all samples encrypted (this is the default behavior).
83
83
***Clear**: samples are not encrypted but track is signaled as using encryption and sample group seig is used.
84
-
***ForceClear[=N]**: samples are not encrypted, track is signaled as using encryption but no sample groups are used. If `N` is set, only leaves the first N samples in the clear and switch to regular encryption after.
84
+
* ForceClear[=N]**: samples are not encrypted, track is signaled as using encryption but no sample groups are used. If `N` is set, only leaves the first N samples in the clear and switch to regular encryption after. If N is 0, all samples are encrypted. If N is -1, no samples are encrypted.
85
85
***RAP** : only Random Access Samples (key frames) will be encrypted. If all media samples are RAPs, this defaults to `None`.
86
86
***Non-RAP** : only non-Random Access Samples (non-key frames) will be encrypted. If all media samples are RAPs, this defaults to `None`.
87
87
***Rand** : random selection of samples to encrypt is performed.
0 commit comments