@@ -152,11 +152,26 @@ const pipelineMachine = Machine(
152152 max-size-bytes=0
153153 `
154154
155+ const bufferQueue = `
156+ queue
157+ max-size-time=${ delayNs }
158+ max-size-buffers=0
159+ max-size-bytes=0
160+ `
161+
162+ const dropQueue = `
163+ queue
164+ leaky=downstream
165+ max-size-time=${ 1 * SEC }
166+ max-size-buffers=0
167+ max-size-bytes=0
168+ `
169+
155170 let outStream
156171 if ( outUri . startsWith ( 'rtmp://' ) ) {
157- outStream = `flvmux name=mux streamable=true ! queue name=outqueue leaky=downstream ! rtmpsink name=sink enable-last-sample=false location="${ outUri } live=1"`
172+ outStream = `flvmux name=mux streamable=true ! queue ! rtmpsink name=sink enable-last-sample=false location="${ outUri } live=1"`
158173 } else if ( outUri . startsWith ( 'srt://' ) ) {
159- outStream = `mpegtsmux name=mux ! queue name=outqueue leaky=downstream ! srtsink name=sink uri=${ outUri } `
174+ outStream = `mpegtsmux name=mux ! queue ! srtsink name=sink uri=${ outUri } `
160175 } else {
161176 throw new Error ( `Unexpected output stream protocol: ${ outUri } ` )
162177 }
@@ -172,8 +187,8 @@ const pipelineMachine = Machine(
172187 ! gdkpixbufoverlay location=${ gstEscape ( overlayImg ) }
173188 ! queue
174189 ! isel.
175- input-selector name=isel ! queue ! x264enc bitrate=${ x264Bitrate } tune=zerolatency speed-preset=${ x264Preset } byte-stream=true threads=0 key-int-max=60 ! queue ! mux.
176- demux. ! queue ! aacparse ! decodebin ! audioconvert ! volume name=vol volume=0 ! audioconvert ! voaacenc bitrate=96000 ! aacparse ! queue ! mux.
190+ input-selector name=isel ! ${ dropQueue } name=videoqueue ! x264enc bitrate=${ x264Bitrate } tune=zerolatency speed-preset=${ x264Preset } byte-stream=true threads=0 key-int-max=60 ! ${ bufferQueue } name=videobufqueue ! mux.
191+ demux. ! queue ! aacparse ! decodebin ! audioconvert ! volume name=vol volume=0 ! audioconvert ! ${ dropQueue } name=audioqueue ! voaacenc bitrate=96000 ! aacparse ! ${ bufferQueue } name=audiobufqueue ! mux.
177192 ${ outStream }
178193 ` )
179194
@@ -218,7 +233,10 @@ const pipelineMachine = Machine(
218233 }
219234 debugInterval = setInterval ( ( ) => {
220235 printQueue ( 'delayqueue' )
221- printQueue ( 'outqueue' )
236+ printQueue ( 'videoqueue' )
237+ printQueue ( 'audioqueue' )
238+ printQueue ( 'videobufqueue' )
239+ printQueue ( 'audiobufqueue' )
222240 console . log ( '---' )
223241 } , 1000 )
224242 }
0 commit comments