File tree Expand file tree Collapse file tree 19 files changed +129
-68
lines changed Expand file tree Collapse file tree 19 files changed +129
-68
lines changed Original file line number Diff line number Diff line change
1
+ import { parseDivisionValue } from './utils/string' ;
1
2
import { from } from './utils/list' ;
2
3
import { parseDuration , parseDate } from './utils/time' ;
3
4
@@ -131,6 +132,18 @@ export const parsers = {
131
132
return parseInt ( value , 10 ) ;
132
133
} ,
133
134
135
+ /**
136
+ * Specifies the frame rate of the representation
137
+ *
138
+ * @param {string } value
139
+ * value of attribute as a string
140
+ * @return {number }
141
+ * The parsed frame rate
142
+ */
143
+ frameRate ( value ) {
144
+ return parseDivisionValue ( value ) ;
145
+ } ,
146
+
134
147
/**
135
148
* Specifies the number of the first Media Segment in this Representation in the Period
136
149
*
Original file line number Diff line number Diff line change @@ -296,6 +296,10 @@ export const formatVideoPlaylist = ({
296
296
segments
297
297
} ;
298
298
299
+ if ( attributes . frameRate ) {
300
+ playlist . attributes [ 'FRAME-RATE' ] = attributes . frameRate ;
301
+ }
302
+
299
303
if ( attributes . contentProtection ) {
300
304
playlist . contentProtection = attributes . contentProtection ;
301
305
}
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Converts the provided string that may contain a division operation to a number.
3
+ *
4
+ * @param {string } value - the provided string value
5
+ *
6
+ * @return {number } the parsed string value
7
+ */
8
+ export const parseDivisionValue = ( value ) => {
9
+ return parseFloat ( value . split ( '/' ) . reduce ( ( prev , current ) => prev / current ) ) ;
10
+ } ;
Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ export const parsedManifest = {
36
36
'AUDIO' : 'audio' ,
37
37
'BANDWIDTH' : 449000 ,
38
38
'CODECS' : 'avc1.420015' ,
39
+ 'FRAME-RATE' : 23.976 ,
39
40
'NAME' : '482' ,
40
41
'PROGRAM-ID' : 1 ,
41
42
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ export const parsedManifest = {
37
37
'AUDIO' : 'audio' ,
38
38
'BANDWIDTH' : 449000 ,
39
39
'CODECS' : 'avc1.420015' ,
40
+ 'FRAME-RATE' : 23.976 ,
40
41
'NAME' : '482' ,
41
42
'PROGRAM-ID' : 1 ,
42
43
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ export const parsedManifest = {
22
22
'AUDIO' : 'audio' ,
23
23
'BANDWIDTH' : 449000 ,
24
24
'CODECS' : 'avc1.420015' ,
25
+ 'FRAME-RATE' : 23.976 ,
25
26
'NAME' : '482' ,
26
27
'PROGRAM-ID' : 1 ,
27
28
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ export const parsedManifest = {
23
23
'AUDIO' : 'audio' ,
24
24
'BANDWIDTH' : 449000 ,
25
25
'CODECS' : 'avc1.420015' ,
26
+ 'FRAME-RATE' : 23.976 ,
26
27
'NAME' : '482' ,
27
28
'PROGRAM-ID' : 1 ,
28
29
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -406,6 +406,7 @@ export const parsedManifest = {
406
406
'NAME' : '482' ,
407
407
'AUDIO' : 'audio' ,
408
408
'SUBTITLES' : 'subs' ,
409
+ 'FRAME-RATE' : 23.976 ,
409
410
'RESOLUTION' : {
410
411
width : 482 ,
411
412
height : 270
@@ -487,6 +488,7 @@ export const parsedManifest = {
487
488
'NAME' : '720' ,
488
489
'AUDIO' : 'audio' ,
489
490
'SUBTITLES' : 'subs' ,
491
+ 'FRAME-RATE' : 23.976 ,
490
492
'RESOLUTION' : {
491
493
width : 720 ,
492
494
height : 404
Original file line number Diff line number Diff line change @@ -613,16 +613,17 @@ export const parsedManifest = {
613
613
playlists : [
614
614
{
615
615
attributes : {
616
- 'NAME' : 'default_video2000_0_1280x720' ,
617
616
'AUDIO' : 'audio' ,
618
- 'SUBTITLES' : 'subs' ,
617
+ 'BANDWIDTH' : 2008000 ,
618
+ 'CODECS' : 'avc1.4d001f' ,
619
+ 'FRAME-RATE' : 29.97 ,
620
+ 'NAME' : 'default_video2000_0_1280x720' ,
621
+ 'PROGRAM-ID' : 1 ,
619
622
'RESOLUTION' : {
620
- width : 1280 ,
621
- height : 720
623
+ height : 720 ,
624
+ width : 1280
622
625
} ,
623
- 'CODECS' : 'avc1.4d001f' ,
624
- 'BANDWIDTH' : 2008000 ,
625
- 'PROGRAM-ID' : 1
626
+ 'SUBTITLES' : 'subs'
626
627
} ,
627
628
uri : '' ,
628
629
endList : false ,
@@ -905,16 +906,17 @@ export const parsedManifest = {
905
906
} ,
906
907
{
907
908
attributes : {
908
- 'NAME' : 'default_video1200_1_960x540' ,
909
909
'AUDIO' : 'audio' ,
910
- 'SUBTITLES' : 'subs' ,
910
+ 'BANDWIDTH' : 1195000 ,
911
+ 'CODECS' : 'avc1.4d001f' ,
912
+ 'FRAME-RATE' : 29.97 ,
913
+ 'NAME' : 'default_video1200_1_960x540' ,
914
+ 'PROGRAM-ID' : 1 ,
911
915
'RESOLUTION' : {
912
- width : 960 ,
913
- height : 540
916
+ height : 540 ,
917
+ width : 960
914
918
} ,
915
- 'CODECS' : 'avc1.4d001f' ,
916
- 'BANDWIDTH' : 1195000 ,
917
- 'PROGRAM-ID' : 1
919
+ 'SUBTITLES' : 'subs'
918
920
} ,
919
921
uri : '' ,
920
922
endList : false ,
@@ -1197,16 +1199,17 @@ export const parsedManifest = {
1197
1199
} ,
1198
1200
{
1199
1201
attributes : {
1200
- 'NAME' : 'default_video900_1_640x360' ,
1201
1202
'AUDIO' : 'audio' ,
1202
- 'SUBTITLES' : 'subs' ,
1203
+ 'BANDWIDTH' : 884000 ,
1204
+ 'CODECS' : 'avc1.4d001e' ,
1205
+ 'FRAME-RATE' : 29.97 ,
1206
+ 'NAME' : 'default_video900_1_640x360' ,
1207
+ 'PROGRAM-ID' : 1 ,
1203
1208
'RESOLUTION' : {
1204
- width : 640 ,
1205
- height : 360
1209
+ height : 360 ,
1210
+ width : 640
1206
1211
} ,
1207
- 'CODECS' : 'avc1.4d001e' ,
1208
- 'BANDWIDTH' : 884000 ,
1209
- 'PROGRAM-ID' : 1
1212
+ 'SUBTITLES' : 'subs'
1210
1213
} ,
1211
1214
uri : '' ,
1212
1215
endList : false ,
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ export const parsedManifest = {
15
15
'AUDIO' : 'audio' ,
16
16
'BANDWIDTH' : 449000 ,
17
17
'CODECS' : 'avc1.420015' ,
18
+ 'FRAME-RATE' : 23.976 ,
18
19
'NAME' : '482' ,
19
20
'PROGRAM-ID' : 1 ,
20
21
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -130,16 +130,17 @@ export const parsedManifest = {
130
130
playlists : [
131
131
{
132
132
attributes : {
133
- 'NAME' : '1' ,
134
133
'AUDIO' : 'audio' ,
135
- 'SUBTITLES' : 'subs' ,
134
+ 'BANDWIDTH' : 100000 ,
135
+ 'CODECS' : 'avc1.4d001f' ,
136
+ 'FRAME-RATE' : 24 ,
137
+ 'NAME' : '1' ,
138
+ 'PROGRAM-ID' : 1 ,
136
139
'RESOLUTION' : {
137
- width : 480 ,
138
- height : 200
140
+ height : 200 ,
141
+ width : 480
139
142
} ,
140
- 'CODECS' : 'avc1.4d001f' ,
141
- 'BANDWIDTH' : 100000 ,
142
- 'PROGRAM-ID' : 1
143
+ 'SUBTITLES' : 'subs'
143
144
} ,
144
145
uri : '' ,
145
146
endList : true ,
Original file line number Diff line number Diff line change @@ -91,6 +91,7 @@ export const parsedManifest = {
91
91
'AUDIO' : 'audio' ,
92
92
'BANDWIDTH' : 2942295 ,
93
93
'CODECS' : 'avc1.4d001f' ,
94
+ 'FRAME-RATE' : 30 ,
94
95
'NAME' : 'D' ,
95
96
'PROGRAM-ID' : 1 ,
96
97
'RESOLUTION' : {
@@ -155,6 +156,7 @@ export const parsedManifest = {
155
156
'AUDIO' : 'audio' ,
156
157
'BANDWIDTH' : 4267536 ,
157
158
'CODECS' : 'avc1.640020' ,
159
+ 'FRAME-RATE' : 60 ,
158
160
'NAME' : 'E' ,
159
161
'PROGRAM-ID' : 1 ,
160
162
'RESOLUTION' : {
@@ -219,6 +221,7 @@ export const parsedManifest = {
219
221
'AUDIO' : 'audio' ,
220
222
'BANDWIDTH' : 5256859 ,
221
223
'CODECS' : 'avc1.640020' ,
224
+ 'FRAME-RATE' : 60 ,
222
225
'NAME' : 'F' ,
223
226
'PROGRAM-ID' : 1 ,
224
227
'RESOLUTION' : {
@@ -283,6 +286,7 @@ export const parsedManifest = {
283
286
'AUDIO' : 'audio' ,
284
287
'BANDWIDTH' : 240781 ,
285
288
'CODECS' : 'avc1.4d000d' ,
289
+ 'FRAME-RATE' : 30 ,
286
290
'NAME' : 'A' ,
287
291
'PROGRAM-ID' : 1 ,
288
292
'RESOLUTION' : {
@@ -347,6 +351,7 @@ export const parsedManifest = {
347
351
'AUDIO' : 'audio' ,
348
352
'BANDWIDTH' : 494354 ,
349
353
'CODECS' : 'avc1.4d001e' ,
354
+ 'FRAME-RATE' : 30 ,
350
355
'NAME' : 'B' ,
351
356
'PROGRAM-ID' : 1 ,
352
357
'RESOLUTION' : {
@@ -411,6 +416,7 @@ export const parsedManifest = {
411
416
'AUDIO' : 'audio' ,
412
417
'BANDWIDTH' : 1277155 ,
413
418
'CODECS' : 'avc1.4d001f' ,
419
+ 'FRAME-RATE' : 30 ,
414
420
'NAME' : 'C' ,
415
421
'PROGRAM-ID' : 1 ,
416
422
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -180,6 +180,7 @@ export const parsedManifest = {
180
180
'AUDIO' : 'audio' ,
181
181
'BANDWIDTH' : 2942295 ,
182
182
'CODECS' : 'avc1.4d001f' ,
183
+ 'FRAME-RATE' : 30 ,
183
184
'NAME' : 'D' ,
184
185
'PROGRAM-ID' : 1 ,
185
186
'RESOLUTION' : {
@@ -333,6 +334,7 @@ export const parsedManifest = {
333
334
'AUDIO' : 'audio' ,
334
335
'BANDWIDTH' : 4267536 ,
335
336
'CODECS' : 'avc1.640020' ,
337
+ 'FRAME-RATE' : 60 ,
336
338
'NAME' : 'E' ,
337
339
'PROGRAM-ID' : 1 ,
338
340
'RESOLUTION' : {
@@ -486,6 +488,7 @@ export const parsedManifest = {
486
488
'AUDIO' : 'audio' ,
487
489
'BANDWIDTH' : 5256859 ,
488
490
'CODECS' : 'avc1.640020' ,
491
+ 'FRAME-RATE' : 60 ,
489
492
'NAME' : 'F' ,
490
493
'PROGRAM-ID' : 1 ,
491
494
'RESOLUTION' : {
@@ -639,6 +642,7 @@ export const parsedManifest = {
639
642
'AUDIO' : 'audio' ,
640
643
'BANDWIDTH' : 240781 ,
641
644
'CODECS' : 'avc1.4d000d' ,
645
+ 'FRAME-RATE' : 30 ,
642
646
'NAME' : 'A' ,
643
647
'PROGRAM-ID' : 1 ,
644
648
'RESOLUTION' : {
@@ -792,6 +796,7 @@ export const parsedManifest = {
792
796
'AUDIO' : 'audio' ,
793
797
'BANDWIDTH' : 494354 ,
794
798
'CODECS' : 'avc1.4d001e' ,
799
+ 'FRAME-RATE' : 30 ,
795
800
'NAME' : 'B' ,
796
801
'PROGRAM-ID' : 1 ,
797
802
'RESOLUTION' : {
@@ -945,6 +950,7 @@ export const parsedManifest = {
945
950
'AUDIO' : 'audio' ,
946
951
'BANDWIDTH' : 1277155 ,
947
952
'CODECS' : 'avc1.4d001e' ,
953
+ 'FRAME-RATE' : 30 ,
948
954
'NAME' : 'C' ,
949
955
'PROGRAM-ID' : 1 ,
950
956
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -613,16 +613,17 @@ export const parsedManifest = {
613
613
playlists : [
614
614
{
615
615
attributes : {
616
- 'NAME' : 'default_video2000_0_1280x720' ,
617
616
'AUDIO' : 'audio' ,
618
- 'SUBTITLES' : 'subs' ,
617
+ 'BANDWIDTH' : 2008000 ,
618
+ 'CODECS' : 'avc1.4d001f' ,
619
+ 'FRAME-RATE' : 29.97 ,
620
+ 'NAME' : 'default_video2000_0_1280x720' ,
621
+ 'PROGRAM-ID' : 1 ,
619
622
'RESOLUTION' : {
620
- width : 1280 ,
621
- height : 720
623
+ height : 720 ,
624
+ width : 1280
622
625
} ,
623
- 'CODECS' : 'avc1.4d001f' ,
624
- 'BANDWIDTH' : 2008000 ,
625
- 'PROGRAM-ID' : 1
626
+ 'SUBTITLES' : 'subs'
626
627
} ,
627
628
uri : '' ,
628
629
endList : true ,
@@ -905,16 +906,17 @@ export const parsedManifest = {
905
906
} ,
906
907
{
907
908
attributes : {
908
- 'NAME' : 'default_video1200_1_960x540' ,
909
909
'AUDIO' : 'audio' ,
910
- 'SUBTITLES' : 'subs' ,
910
+ 'BANDWIDTH' : 1195000 ,
911
+ 'CODECS' : 'avc1.4d001f' ,
912
+ 'FRAME-RATE' : 29.97 ,
913
+ 'NAME' : 'default_video1200_1_960x540' ,
914
+ 'PROGRAM-ID' : 1 ,
911
915
'RESOLUTION' : {
912
- width : 960 ,
913
- height : 540
916
+ height : 540 ,
917
+ width : 960
914
918
} ,
915
- 'CODECS' : 'avc1.4d001f' ,
916
- 'BANDWIDTH' : 1195000 ,
917
- 'PROGRAM-ID' : 1
919
+ 'SUBTITLES' : 'subs'
918
920
} ,
919
921
uri : '' ,
920
922
endList : true ,
@@ -1197,16 +1199,17 @@ export const parsedManifest = {
1197
1199
} ,
1198
1200
{
1199
1201
attributes : {
1200
- 'NAME' : 'default_video900_1_640x360' ,
1201
1202
'AUDIO' : 'audio' ,
1202
- 'SUBTITLES' : 'subs' ,
1203
+ 'BANDWIDTH' : 884000 ,
1204
+ 'CODECS' : 'avc1.4d001e' ,
1205
+ 'FRAME-RATE' : 29.97 ,
1206
+ 'NAME' : 'default_video900_1_640x360' ,
1207
+ 'PROGRAM-ID' : 1 ,
1203
1208
'RESOLUTION' : {
1204
- width : 640 ,
1205
- height : 360
1209
+ height : 360 ,
1210
+ width : 640
1206
1211
} ,
1207
- 'CODECS' : 'avc1.4d001e' ,
1208
- 'BANDWIDTH' : 884000 ,
1209
- 'PROGRAM-ID' : 1
1212
+ 'SUBTITLES' : 'subs'
1210
1213
} ,
1211
1214
uri : '' ,
1212
1215
endList : true ,
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ export const parsedManifest = {
15
15
'AUDIO' : 'audio' ,
16
16
'BANDWIDTH' : 449000 ,
17
17
'CODECS' : 'avc1.420015' ,
18
+ 'FRAME-RATE' : 23.976 ,
18
19
'NAME' : '482' ,
19
20
'PROGRAM-ID' : 1 ,
20
21
'RESOLUTION' : {
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ export const parsedManifest = {
15
15
'AUDIO' : 'audio' ,
16
16
'BANDWIDTH' : 449000 ,
17
17
'CODECS' : 'avc1.420015' ,
18
+ 'FRAME-RATE' : 23.976 ,
18
19
'NAME' : '482' ,
19
20
'PROGRAM-ID' : 1 ,
20
21
'RESOLUTION' : {
@@ -112,6 +113,7 @@ export const parsedManifest = {
112
113
'AUDIO' : 'audio' ,
113
114
'BANDWIDTH' : 3971000 ,
114
115
'CODECS' : 'avc1.420015' ,
116
+ 'FRAME-RATE' : 23.976 ,
115
117
'NAME' : '720' ,
116
118
'PROGRAM-ID' : 1 ,
117
119
'RESOLUTION' : {
You can’t perform that action at this time.
0 commit comments