@@ -29,6 +29,13 @@ if Enum.all?(
29
29
* `{:playlist_playable, content_type, stream_id}`
30
30
* `{:cleanup, clean_function, stream_id}`
31
31
"""
32
+ ] ,
33
+ framerate: [
34
+ spec: integer ( ) ,
35
+ description: """
36
+ Framerate of tracks
37
+ """ ,
38
+ default: 30
32
39
]
33
40
34
41
@ impl true
@@ -37,7 +44,8 @@ if Enum.all?(
37
44
tracks: % { } ,
38
45
stream_ids: MapSet . new ( ) ,
39
46
output_directory: opts . output_directory ,
40
- owner: opts . owner
47
+ owner: opts . owner ,
48
+ framerate: opts . framerate
41
49
}
42
50
43
51
{ :ok , state }
@@ -100,7 +108,14 @@ if Enum.all?(
100
108
File . rm_rf ( directory )
101
109
File . mkdir_p! ( directory )
102
110
103
- spec = hls_links_and_children ( link_builder , track . encoding , track_id , track . stream_id )
111
+ spec =
112
+ hls_links_and_children (
113
+ link_builder ,
114
+ track . encoding ,
115
+ track_id ,
116
+ track . stream_id ,
117
+ state . framerate
118
+ )
104
119
105
120
{ spec , state } =
106
121
if MapSet . member? ( state . stream_ids , track . stream_id ) do
@@ -127,7 +142,7 @@ if Enum.all?(
127
142
{ { :ok , spec: spec } , state }
128
143
end
129
144
130
- defp hls_links_and_children ( link_builder , :OPUS , track_id , stream_id ) ,
145
+ defp hls_links_and_children ( link_builder , :OPUS , track_id , stream_id , _framerate ) ,
131
146
do: % ParentSpec {
132
147
children: % {
133
148
{ :opus_decoder , track_id } => Membrane.Opus.Decoder ,
@@ -144,7 +159,7 @@ if Enum.all?(
144
159
]
145
160
}
146
161
147
- defp hls_links_and_children ( link_builder , :AAC , track_id , stream_id ) ,
162
+ defp hls_links_and_children ( link_builder , :AAC , track_id , stream_id , _framerate ) ,
148
163
do: % ParentSpec {
149
164
children: % { } ,
150
165
links: [
@@ -154,11 +169,11 @@ if Enum.all?(
154
169
]
155
170
}
156
171
157
- defp hls_links_and_children ( link_builder , :H264 , track_id , stream_id ) ,
172
+ defp hls_links_and_children ( link_builder , :H264 , track_id , stream_id , framerate ) ,
158
173
do: % ParentSpec {
159
174
children: % {
160
175
{ :video_parser , track_id } => % Membrane.H264.FFmpeg.Parser {
161
- framerate: { 30 , 1 } ,
176
+ framerate: { framerate , 1 } ,
162
177
alignment: :au ,
163
178
attach_nalus?: true
164
179
}
0 commit comments