threefive 3.0.93__tar.gz → 3.0.97__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {threefive-3.0.93 → threefive-3.0.97}/PKG-INFO +294 -139
  2. {threefive-3.0.93 → threefive-3.0.97}/README.md +293 -138
  3. {threefive-3.0.93 → threefive-3.0.97}/pyproject.toml +1 -1
  4. {threefive-3.0.93 → threefive-3.0.97}/threefive/__init__.py +3 -13
  5. {threefive-3.0.93 → threefive-3.0.97}/threefive/base.py +21 -18
  6. {threefive-3.0.93 → threefive-3.0.97}/threefive/bitn.py +45 -21
  7. {threefive-3.0.93 → threefive-3.0.97}/threefive/cli.py +202 -212
  8. threefive-3.0.97/threefive/crctable.py +34 -0
  9. {threefive-3.0.93 → threefive-3.0.97}/threefive/cue.py +45 -24
  10. {threefive-3.0.93 → threefive-3.0.97}/threefive/gums.py +11 -13
  11. {threefive-3.0.93 → threefive-3.0.97}/threefive/hls.py +8 -10
  12. {threefive-3.0.93 → threefive-3.0.97}/threefive/hlstags.py +9 -2
  13. {threefive-3.0.93 → threefive-3.0.97}/threefive/new_reader.py +16 -18
  14. {threefive-3.0.93 → threefive-3.0.97}/threefive/segment.py +11 -12
  15. {threefive-3.0.93 → threefive-3.0.97}/threefive/stream.py +107 -116
  16. {threefive-3.0.93 → threefive-3.0.97}/threefive/throttle.py +4 -3
  17. {threefive-3.0.93 → threefive-3.0.97}/threefive/udp.py +3 -18
  18. {threefive-3.0.93 → threefive-3.0.97}/threefive/version.py +1 -1
  19. {threefive-3.0.93 → threefive-3.0.97}/threefive.egg-info/PKG-INFO +294 -139
  20. {threefive-3.0.93 → threefive-3.0.97}/threefive.egg-info/SOURCES.txt +0 -1
  21. threefive-3.0.93/threefive/bump.py +0 -236
  22. threefive-3.0.93/threefive/crctable.py +0 -258
  23. {threefive-3.0.93 → threefive-3.0.97}/LICENSE +0 -0
  24. {threefive-3.0.93 → threefive-3.0.97}/setup.cfg +0 -0
  25. {threefive-3.0.93 → threefive-3.0.97}/threefive/aac.py +0 -0
  26. {threefive-3.0.93 → threefive-3.0.97}/threefive/commands.py +0 -0
  27. {threefive-3.0.93 → threefive-3.0.97}/threefive/crc.py +0 -0
  28. {threefive-3.0.93 → threefive-3.0.97}/threefive/descriptors.py +0 -0
  29. {threefive-3.0.93 → threefive-3.0.97}/threefive/encode.py +0 -0
  30. {threefive-3.0.93 → threefive-3.0.97}/threefive/hlsprofile.py +0 -0
  31. {threefive-3.0.93 → threefive-3.0.97}/threefive/iframes.py +0 -0
  32. {threefive-3.0.93 → threefive-3.0.97}/threefive/packetdata.py +0 -0
  33. {threefive-3.0.93 → threefive-3.0.97}/threefive/pmt.py +0 -0
  34. {threefive-3.0.93 → threefive-3.0.97}/threefive/section.py +0 -0
  35. {threefive-3.0.93 → threefive-3.0.97}/threefive/segmentation.py +0 -0
  36. {threefive-3.0.93 → threefive-3.0.97}/threefive/sixfix.py +0 -0
  37. {threefive-3.0.93 → threefive-3.0.97}/threefive/speedo.py +0 -0
  38. {threefive-3.0.93 → threefive-3.0.97}/threefive/streamtypes.py +0 -0
  39. {threefive-3.0.93 → threefive-3.0.97}/threefive/stuff.py +0 -0
  40. {threefive-3.0.93 → threefive-3.0.97}/threefive/superkabuki.py +0 -0
  41. {threefive-3.0.93 → threefive-3.0.97}/threefive/upids.py +0 -0
  42. {threefive-3.0.93 → threefive-3.0.97}/threefive/uxp.py +0 -0
  43. {threefive-3.0.93 → threefive-3.0.97}/threefive/xml.py +0 -0
  44. {threefive-3.0.93 → threefive-3.0.97}/threefive.egg-info/dependency_links.txt +0 -0
  45. {threefive-3.0.93 → threefive-3.0.97}/threefive.egg-info/entry_points.txt +0 -0
  46. {threefive-3.0.93 → threefive-3.0.97}/threefive.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: threefive
3
- Version: 3.0.93
3
+ Version: 3.0.97
4
4
  Summary: threefive is The #1 SCTE-35 Decoder and Encoder on the Planet.
5
5
  Author-email: AdrianofDoom <spam@iodisco.com>
6
6
  License-Expression: Sleepycat
@@ -17,47 +17,115 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Dynamic: license-file
19
19
 
20
- # threefive is the highest rated SCTE-35 tool. Ever.
20
+ _A lot of people consider me to be a subject matter expert on SCTE-35,<BR> I see myself more as the undisputed heavy weight champion of SCTE-35._ ~Adrian
21
+
22
+ # [ threefive ]
23
+
24
+ # Over 1.2 Million Installs.
25
+
26
+
27
+
21
28
  * __Decodes SCTE-35__ from `MPEGTS`✔ `Base64`✔ `Bytes`✔ `DASH`✔ `Hex` ✔ `HLS`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
22
29
  * __Encodes SCTE-35__ to `MPEGTS`✔ `Base64`✔ `Bytes`✔ `Hex`✔ `Integers`✔ `JSON`✔ `XML`✔ `XML+Binary`✔
23
- ___
24
30
 
25
- ## [ News ]
26
- * __threefive__ now has support for __SCTE-35-2. Event Descriptors__ and __Property types__ from the recently published __2026 SCTE-35-2 Specification__.
27
- * __threefive v3.0.93__ now supports HLS autodetection in the cli.
28
- ___
31
+ # [ version ]
29
32
 
30
- ## [ Latest threefive version is v3.0.93 ] _Released 06/11/2026_
31
- ___
32
- ## [[ Examples ]](https://github.com/superkabuki/threefive_is_scte35/blob/main/examples)
33
- ___
34
- ## [ [ Tip of the Week ] ](totw.md)
33
+ ### __latest is v.3.0.97__
34
+
35
+
36
+ # [ really really quick start ]
37
+
38
+ * __Install__
39
+ ```
40
+ python3 -m pip install threefive`
41
+ ```
42
+ * __decoding SCTE-35__
43
+ * __base64__
44
+ * decode __SCTE-35__ as __base64__
45
+ ```cobol
46
+ threefive '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q=='
47
+ ```
48
+ * decode __SCTE-35__ as __base64__ and __convert SCTE-35 to hex__
49
+ ```cobol
50
+ threefive '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' hex
51
+ ```
52
+ * __Hex__
53
+ * decode __SCTE-35__ as __hex__
54
+ ```cobol
55
+ threefive '0xfc301600000000000000fff00506fe00a98ac700000b3baed9'
56
+ ```
57
+ * decode __SCTE-35__ as __hex__ and __convert__ __SCTE-35__ to __xml__
58
+ ```cobol
59
+ threefive '0xfc301600000000000000fff00506fe00a98ac700000b3baed9' xml
60
+ ```
61
+ * __HLS__
62
+ * decode __SCTE-35__ from __HLS__ ( a rendition or a master.m3u8)
63
+ ```cobol
64
+ threefive 'https://demo.unified-streaming.com/k8s/live/scte35.isml/.m3u8'
65
+ ```
66
+ * __MPEGTS__
67
+ * decode __SCTE-35__ from __MPEGTS__
68
+ ```cobol
69
+ threefive 'https;//iodisco.com/longb2.ts'
70
+ ```
71
+ * decode __SCTE-35__ from __MPEGTS__ and __convert__ __SCTE-35__ to __bytes__
72
+ ```cobol
73
+ threefive 'https;//iodisco.com/longb2.ts' bytes
74
+ ```
75
+ * __Multicast__
76
+ * decode __SCTE-35__ from __MPEGTS__ over __Multicast__
77
+ ```cobol
78
+ threefive udp://@235.3.5.35:3535
79
+ ```
80
+
81
+ * __threefive does a lot more__, that was just to get you started.
35
82
  ___
36
- # [ Documentation ]
83
+
84
+ # [ Documentation ]
85
+
86
+ [A Lot of Examples ](https://github.com/superkabuki/threefive_is_scte35/blob/main/examples) | [ Tip of the Week ](totw.md) | [ Cheap Tricks ](cheaptricks.md) |
87
+
88
+
37
89
  #### Need to inject SCTE-35 into HLS? [X9k3.](https://github.com/superkabuki/x9k3)
90
+
38
91
  * [__web based SCTE-35 tools__](#web) - threefive and friends over http.
92
+
39
93
  * [__install__](#install)
94
+
40
95
  * [__quick start__](quickstart.md)
41
- * __command line tools__
42
- * [ __threefive__](#cli) _decode SCTE-35 on the command line_
43
- * [__scte35bump__](#scte35bump) _adjust SCTE-35 PTS in MPEGTS streams_
96
+
97
+ * ___SCTE-35 on the command line___
98
+ * [ __the threefive cli tool__](#-cli-) _If you work with SCTE-35, this is as cool as it gets._
99
+
100
+ * __other included tools__
44
101
  * [__scte35fix__](#scte35fix) _ffmpeg changes scte-35 streams into bin data, scte35fix changes them back._
45
102
  * [__scte35inject__](scte35inject.md) _scte35inject inject scte-35 into mpegts._
46
103
  * [__gums__](#gums) _gums is a multicast sender(server) for video_
47
- * __library__
104
+
105
+
106
+ * __the threefive library__ _cool code for the cool kids_.
48
107
  * [__Using the threefive.Cue class__](lib.md)
49
- * [__Using the threefive library__](#using-the-library) _decode SCTE-35 with less than ten lines of code_
108
+ * [__Using the threefive library__](#-using-the-library-) _decode SCTE-35 with less than ten lines of code_
50
109
  * * [threefive __Classes__](#classes) _threefive is OO, made to subclass_
51
110
  * [__Cue__ Class](https://github.com/superkabuki/threefive/blob/main/cue.md) _this class you'll use often_
52
111
  * [__Stream__ Class](https://github.com/superkabuki/threefive/blob/main/stream.md) _this is the class for parsing MPEGTS_
112
+
53
113
  * [SCTE-35 __Sidecar Files__](https://github.com/superkabuki/SCTE-35_Sidecar_Files) _threefive supports SCTE-35 sidecar files_
54
- * [SCTE-35 __HLS__](https://github.com/superkabuki/threefive/blob/main/hls.md) _parse SCTE-35 in HLS__
114
+
115
+ * [SCTE-35 __HLS__](https://github.com/superkabuki/threefive/blob/main/hls.md) _parse SCTE-35 in HLS in MPEGTS,CMAF, or fmP4__
116
+
55
117
  * [SCTE-35 __XML__ ](https://github.com/superkabuki/SCTE-35/blob/main/xml.md) and [More __XML__](node.md) _threefive can parse and encode SCTE-35 xml_
118
+
56
119
  * [__Encode__ SCTE-35](https://github.com/superkabuki/threefive/blob/main/encode.md) _threefive can encode SCTE-35 in every SCTE-35 format_
120
+
57
121
  * [Make your __threefive__ script an executable with __cython__](cython.md) _threefive is compatible with all python tools_
58
122
  </samp>
59
123
 
60
124
  ## [Install]
125
+
126
+ * __threefive__ is curretnly tested on python-3.11, python-3.14, python-3.14t, pypy-7.3.11 and pypy-7.3.22
127
+
128
+ * __threefive__ is some of the __fastest code__ you'll see on __python3__.
61
129
  * __python3 via pip__
62
130
  ```rebol
63
131
  python3 -mpip install threefive
@@ -96,121 +164,120 @@ make install py3=python3.14
96
164
  # works for any python in your path or use a full path if needed.
97
165
 
98
166
  ```
99
- # [⇧](#-documentation-)
167
+ #### [⇧](#-documentation-)
100
168
  ___
101
169
 
102
- ### [CLI]
103
- The threefive cli tool is able to parse SCTE-35 from MPEGTS Streams,Base64,Hex,Integers,JSON XML,and XMLBinary.
104
- The format is auto-detected.
170
+ ## [ CLI ]
171
+ threefive is designed to be easy to use. I'm not sure that it's served well by a long explaination, so I'm going to try and keep this brief.
105
172
 
106
- # [⇧](#-documentation-)
173
+ ### The threefive cli tool.
107
174
 
108
- #### [ Parse SCTE-35 from HLS with threefive ]
109
- ```js
110
- threefive https://example.com/master.m3u8
111
- ```
175
+ the threefive cli tool decodes SCTE-35, formats are autodetected, and they all work the same way.
112
176
 
113
- #### [ Parse SCTE-35 from MPEGTS ]
114
- SCTE-35 can be parsed from MPEGTS over a variety of protocols.
115
- * __SCTE-35 Input__: MPEGTS
116
- * __Protocols__: pipes, files, stdin, http(s), multicast,SRT and UDP.
117
- * __SCTE-35 Output__: JSON _(default)_ base64, bytes, hex, int, xml, and xmlbin.
177
+ threefive [media to parse for SCTE-35]
118
178
 
119
- |SCTE-35 Input | Protocol | SCTE-35 Output | Command |
120
- |-------|------------|-----------|---------------------------------------------------------|
121
- |__MPEGTS__|file|__JSON__ | __threefive__ video.ts |
122
- |__.__|https|__base64__ | __threefive__ https://example.com/video.ts __base64__ |
123
- |__.__|multicast|__bytes__ | __threefive__ udp://@235.3.5:3535 __bytes__ |
124
- |__.__|SRT|__hex__ | __threefive__ srt://1.2.3.4:4201 __hex__ |
125
- |__.__|UDP|__int__ | __threefive__ udp://10.10.10.10:1011 __int__ |
126
- |__.__|Pipe|__xml__| cat video.ts \| __threefive__ __xml__ |
127
- |__.__|stdin|__xml+bin__| __threefive__ __xmlbin__ < video.ts|
179
+ examples:
128
180
 
129
- ___
181
+ *
182
+ ```sed
183
+ threefive '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q=='
184
+ ```
185
+ *
186
+ ```sed
187
+ threefive 0xfc301600000000000000fff00506fe00a98ac700000b3baed9
188
+ ```
189
+ *
190
+ ```sed
191
+ threefive 1583008701074197245727019716796221242036302348025116111908569
192
+ ```
193
+ *
194
+ ```sed
195
+ threefive video.ts
196
+ ```
197
+ *
198
+ ```sed
199
+ threefive https://demo.unified-streaming.com/k8s/live/scte35.isml/scte35-audio_eng=64000-video=500000.m3u8
200
+ ```
130
201
 
131
- # [⇧](#-documentation-)
202
+ * Formats like XML and JSON that may be to large to type on the command line,they can be redirected or piped in to threefive.
132
203
 
133
- #### [ Parse SCTE-35 Cues ]
134
-
135
- * The __default output__ is JSON
136
- * __SCTE-35 Inputs:__ base64, hex, int, JSON,int,xml,and xmlbin.
137
- * __SCTE-35 Outputs:__ base64, bytes, hex, int,JSON, xml, and xmlbin.
138
- * __Any Input can be used with Any Output__
139
-
140
- > __Here are several examples.__
141
-
142
- |SCTE-35 Input | SCTE-35 Output | Command |
143
- |-------|-----------|---------------------------------------------------------|
144
- |__base64__|__JSON__ | __threefive__ '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' |
145
- |__.__|__bytes__ | __threefive__ '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' __bytes__|
146
- |__.__|__hex__ | __threefive__ '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' __hex__|
147
- |__.__|__xml__ | __threefive__ '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' __xml__|
148
- |__hex__ | __JSON__ | __threefive__ 0xfc301600000000000000fff00506fe00a98ac700000b3baed9|
149
- |__.__ | __base64__ | __threefive__ 0xfc301600000000000000fff00506fe00a98ac700000b3baed9 __base64__ |
150
- |__.__ | __int__ | __threefive__ 0xfc301600000000000000fff00506fe00a98ac700000b3baed9 __int__ |
151
- |__.__ | __xmlbin__ | __threefive__ 0xfc301600000000000000fff00506fe00a98ac700000b3baed9 __xmlbin__ |
152
- | __int__ | __JSON__ | __threefive__ 1583008701074197245727019716796221242036302348025116111908569 |
153
- |__.__ | __hex__ | __threefive__ 1583008701074197245727019716796221242036302348025116111908569 __hex__ |
154
- |__.__ | __xml__ | __threefive__ 1583008701074197245727019716796221242036302348025116111908569 __xml__ |
155
- |__JSON__ |__base64__ | __threefive__ < json.json __base64__ |
156
- |__.__ |__bytes__ | __threefive__ < json.json __bytes__ |
157
- |__.__ |__xml__ | __threefive__ < json.json __xml__ |
158
- |__xml__ |__JSON__ | __threefive__ < xml.xml |
159
- |__xmlbin__|__int__ | __threefive__ < xmlbin.xml __int__ |
204
+ * redirect
205
+ ```sed
206
+ threefive < xml.xml
207
+ ```
208
+ * pipe
209
+ ```sed
210
+ cat json.json | threefive
160
211
 
161
- ___
212
+ ```
213
+ ### cli outputs and converting SCTE-35 Formats
162
214
 
163
- # [⇧](#-documentation-)
215
+ * the __default output format for threefive is json__
164
216
 
165
- #### [__Additional functionality__]
166
- * threefive has several additional features, mostly related to MPEGTS streams.
167
- * threefive has built in help, just type `threefive help`
168
- * This table shows how to use them.
169
-
170
- | Description | How To Use |
171
- |------------------------------------------|---------------------------------------------------------|
172
- | Inject __SCTE35__ packets |threefive __inject__ -i in.video -s sidecar.txt -o out.ts|
173
- | Show raw __SCTE35__ packets |threefive __packets__ udp://@235.35.3.5:3535 |
174
- | Copy MPEGTS stream to stdout at realtime speed| threefive __rt__ input.ts | mplayer - |
175
- | Create __SCTE35__ sidecar file |threefive __sidecar__ video.ts |
176
- | Show streams in mpegts stream | threefive __show__ https://example.com/video.ts |
177
- | Show __iframes__ in mpegts stream |threefive __iframes__ srt://10.10.1.3:9000 |
178
- | Show __PTS__ values from mpegts stream | threefive __pts__ udp://192.168.1.10:9000 |
179
- |__Proxy__ the __mpegts__ stream to stdout |threefive __proxy__ https://wexample.com/video.ts |
180
- | | |
181
- | | |
217
+ * The cli tool can convert from one SCTE-35 format to another using keywords.
218
+ * The keywords are __base64,bytes,hex, int,json,xml, and xmlbin__
182
219
 
183
- ___
220
+ * some conversion examples
184
221
 
185
- # [⇧](#-documentation-)
186
222
 
223
+ * SCTE-35 Base64 to SCTE-35 Hex
224
+ ```sed
225
+ threefive '/DAWAAAAAAAAAP/wBQb+AKmKxwAACzuu2Q==' hex
226
+ ```
227
+ * SCTE-35 Int to SCTE-35 Xml
228
+ ```sed
229
+ threefive 1583008701074197245727019716796221242036302348025116111908569 xml
230
+ ```
231
+ * SCTE-35 Hex to SCTE-35 xml+binary
232
+ ```sed
233
+ threefive 0xfc301600000000000000fff00506fe00a98ac700000b3baed9 xmlbin
234
+ ```
187
235
 
188
- ### Other tools
189
- threefive also comes with:
190
- #### scte35bump
236
+ ### threefive cli and MPEGTS
237
+ * threefive can parse MPEGTS from stdin, local files, HTTP(s), Multicast, SRT, and unicast UDP.
191
238
 
192
- * bump adjusts SCTE-35 PTS in an MPEGTS stream
239
+ * some mpegts examples
193
240
 
194
- ```js
195
- $ scte35bump -h
196
- usage: scte35bump [-h] [-i INFILE] [-o OUTFILE] [-s SECS]
241
+ * local
242
+ ```sed
243
+ threefive video.ts
244
+ ```
245
+ * stdin
246
+ ```sed
247
+ cat video.ts | threefive
248
+ ```
249
+ * https
250
+ ```sed
251
+ threefive https://iodisco.com/longb2.ts
252
+ ```
253
+ * multicast
254
+ ```sed
255
+ threefive udp://@235.35.3.5:3535
256
+ ```
197
257
 
198
- options:
199
- -h, --help show this help message and exit
200
- -i INFILE, --infile INFILE
201
- Input source, stdin, file, http(s), udp, or multicast
202
- mpegts [default: sys.stdin.buffer]
203
- -o OUTFILE, --outfile OUTFILE
204
- Output file [default: sys.stdout.buffer]
205
- -s SECS, --secs SECS Adjustment to apply to SCTE-35 Cues. [default: 0.0]
258
+ ### threefive cli MPEGTS outputs
259
+
260
+ * the __default output for MPEGTS is json__
261
+
262
+ * keywords can be used to specify other output formats
263
+ * The keywords are __base64,bytes,hex, int,json,xml, and xmlbin__
206
264
 
207
- scte35bump is part of threefive.
265
+ * An example of mpegts with a keyword
208
266
  ```
267
+ threefive https://iodisco.com/longb2.ts xml
268
+ ```
269
+
270
+
209
271
  ___
210
272
 
211
- # [⇧](#-documentation-)
273
+ #### [⇧](#-documentation-)
274
+
275
+
276
+ ##### Other tools
277
+
278
+ threefive also comes with:
212
279
 
213
- #### gums
280
+ ##### gums
214
281
  * the Grande Udp Multicast Server
215
282
 
216
283
  ```js
@@ -230,7 +297,7 @@ options:
230
297
  gums is part of threefive.
231
298
  ```
232
299
 
233
- # [⇧](#-documentation-)
300
+ #### [⇧](#-documentation-)
234
301
 
235
302
  #### HLS
236
303
 
@@ -239,27 +306,115 @@ gums is part of threefive.
239
306
  ```js
240
307
  $ threefive hls help
241
308
  ```
309
+ ```smalltalk
242
310
 
243
311
  [ Input ]
244
- threefive hls takes an m3u8 URI as input.
245
- M3U8 formats supported:
246
- * master ( When a master.m3u8 used,
247
- threefive hls parses the first rendition it finds )
248
- * rendition
249
- Segment types supported:
250
- * AAC
251
- * AC3
252
- * MPEGTS
253
- *codecs:
254
- * video
255
- * mpeg2, h.264, h.265
256
- * audio
257
- * mpeg2, aac, ac3, mp3
312
+
313
+ A m3u8 URI as input.
314
+
315
+ [what is supported]
316
+
317
+ M3U8 formats: master, rendition
318
+ Segment types: AAC, AC3, MPEGTS, CMAF,fMP4
319
+ Video codecs: mpeg2, h.264, h.265
320
+ Audio codecs: mpeg2, aac, ac3, mp3
321
+ Protocols: File, Http(s), Multicast, SRT, Stdin, UDP
322
+ Encryption: AES-128 (automatic)
323
+
324
+ [ SCTE-35 ]
325
+
326
+ SCTE-35 Embedded Cues as well as all SCTE-35 HLS Tags can be parsed.
327
+
328
+ [ Supported HLS Tags ]
329
+
330
+ * #EXT-OATCLS-SCTE35
331
+ * #EXT-X-CUE-OUT-CONT
332
+ * #EXT-X-DATERANGE
333
+ * #EXT-X-SCTE35
334
+ * #EXT-X-CUE-IN
335
+ * #EXT-X-CUE-OUT
336
+
337
+ [ SCTE-35 Parsing Profiles ]
338
+
339
+ SCTE-35 parsing can be fine tuned by setting a parsing profile.
340
+
341
+ running the command: threefive hls profile
342
+
343
+ will generate a default profile and write a file named hls.profile
344
+ in the current working directory.
345
+
346
+ a@fu:~$ cat hls.profile
347
+
348
+ expand_cues = False
349
+ parse_segments = False
350
+ parse_manifests = True
351
+ hls_tags = #EXT-OATCLS-SCTE35,#EXT-X-CUE-OUT-CONT,
352
+ #EXT-X-DATERANGE,#EXT-X-SCTE35,#EXT-X-CUE-IN,#EXT-X-CUE-OUT
353
+ command_types = 0x6,0x5
354
+ descriptor_tags = 0x2
355
+ starts = 0x22,0x30,0x32,0x34,0x36,0x44,0x46
356
+
357
+ ( Integers are show in hex (base 16),
358
+ base 10 unsigned integers can also be used in hls.profile )
359
+
360
+ * expand_cues: set to True to show cues fully expanded as JSON
361
+ * parse_segments: set to true to enable parsing SCTE-35 from MPEGTS.
362
+ * parse_manifests: set to true to parse the m3u8 file for SCTE-35 HLS Tags.
363
+ * hls_tags: set which SCTE-35 HLS Tags to parse.
364
+ * command_types: set which Splice Commands to parse.
365
+ * descriptor_tags: set which Splice Descriptor Tags to parse.
366
+ * starts: set which Segmentation Type IDs to use to start breaks.
367
+
368
+ Edit the file as needed and then run threefive.
369
+
370
+ [ Profile Formatting Rules ]
371
+
372
+ * Values do not need to be quoted.
373
+ * Multiple values are separated by a commas.
374
+ * No partial line comments. Comments must be on a separate lines.
375
+ * Comments can be started with a # or //
376
+ * Integers can be base 10 or base 16
377
+
378
+ [ Output Files ]
379
+ scte35 hls creates a few output files.
380
+
381
+ * Profile rules applied to the output:
382
+
383
+ * hls.m3u8 - live playable rewrite of the m3u8 with the profile SCTE-35 rules.
384
+ * hls.sidecar - list of ( pts, HLS SCTE-35 tag ) pairs
385
+
386
+ * Profile rules not applied to the output:
387
+
388
+ * hlsflat.m3u8 - hls live streams are flattened out into a vod playlist.
389
+ When the live m3u8 first loads, every line is written to hlsflat.m3u8
390
+ Wnen a live m3u8 is reloaded, everything except the headers
391
+ is appended to hlsflat.m3u8. This give you a VOD style m3u8
392
+ so you can fast forward or rewind while playing.
393
+ GREAT for debugging SCTE-35 live hls.
394
+
395
+ [ Cool Features ]
396
+
397
+ * threefive can resume when started in the middle of an ad break.
398
+
399
+ 2023-10-13T05:59:50.24Z Resuming Ad Break
400
+ 2023-10-13T05:59:50.34Z Setting Break Timer to 17.733
401
+ 2023-10-13T05:59:50.44Z Setting Break Duration to 60.067
402
+
403
+ [ Example Usage ]
404
+
405
+ * Show this help: threefive hls help
406
+
407
+ * Generate a new hls.profile: threefive hls profile
408
+
409
+ * parse an m3u8: scte35hls https://example.com/out/master.m3u8
410
+
411
+
258
412
  ```
259
413
 
260
- # [⇧](#-documentation-)
414
+ #### [⇧](#-documentation-)
261
415
 
262
416
  #### __scte35fix__
417
+
263
418
  * when ffmpeg changes a SCTE-35 stream to bin data stream, scte35fix changes it back.
264
419
 
265
420
  ```js
@@ -284,9 +439,9 @@ scte35fix is part of threefive.
284
439
  ```
285
440
  ___
286
441
 
287
- # [⇧](#-documentation-)
442
+ #### [⇧](#-documentation-)
288
443
 
289
- ### [Using the library]
444
+ ## [ Using the library ]
290
445
  * Let me show you how easy threefive is to use.
291
446
 
292
447
  * reading SCTE-35 xml from a file
@@ -523,9 +678,9 @@ Type "help", "copyright", "credits" or "license" for more information.
523
678
  ```
524
679
  ___
525
680
 
526
- # [⇧](#-documentation-)
681
+ #### [⇧](#-documentation-)
527
682
 
528
- ### [web]
683
+ #### [web]
529
684
  * [threefive SCTE-35 __Online Parser__](https://iodisco.com/scte35) __hosted on my server iodisco.com__
530
685
  * Parse SCTE-35 in MPEGTS over HTTP, in your browser with[ Go, Wasm and Super Karate Death Car](https://bigcorp.ltd/gowasm) __hosted om my server bigcorp.ltd__
531
686
  * Parse SCTE-35 in MPEGTS over HTTP, in your browser with[ threefive.js,javascript, and a little sed](https://bigcorp.ltd/bread) just to keep things interesting. __hosted om my server bigcorp.ltd__
@@ -534,17 +689,17 @@ ___
534
689
  __hosted on my server iodisco.com__
535
690
  ___
536
691
 
537
- # [⇧](#-documentation-)
692
+ #### [⇧](#-documentation-)
538
693
 
539
- ### [XML]
694
+ #### [XML]
540
695
  * [XML](https://github.com/superkabuki/SCTE-35/blob/main/xml.md) __New__! _updated 05/01/2025_
541
696
 
542
- ### [HLS]
697
+ #### [HLS]
543
698
  * [Advanced Parsing of SCTE-35 in HLS with threefive](https://github.com/superkabuki/threefive/blob/main/hls.md) All HLS SCTE-35 tags, Sidecar Files, AAC ID3 Header Timestamps, SCTE-35 filters... Who loves you baby?
544
699
 
545
- # [⇧](#-documentation-)
700
+ #### [⇧](#-documentation-)
546
701
 
547
- ### [Classes]
702
+ #### [Classes]
548
703
  * The python built in help is always the most up to date docs for the library.
549
704
 
550
705
  ```py3
@@ -562,9 +717,9 @@ a@fu:~/build7/threefive$ pypy3
562
717
 
563
718
  ___
564
719
 
565
- # [⇧](#-documentation-)
720
+ #### [⇧](#-documentation-)
566
721
 
567
- ### [threefive now supports SRT]
722
+ #### [threefive now supports SRT]
568
723
 
569
724
  * _( You have to unmute the audio )_
570
725
 
@@ -579,9 +734,9 @@ https://github.com/user-attachments/assets/a323ea90-867f-480f-a55f-e9339263e511
579
734
 
580
735
  ___
581
736
 
582
- # [⇧](#-documentation-)
737
+ #### [⇧](#-documentation-)
583
738
 
584
- ### [more]
739
+ ##### [more]
585
740
 
586
741
  * [Encode SCTE-35](https://github.com/superkabuki/threefive/blob/main/encode.md) Some encoding code examples.
587
742
  ___