@@ -268,16 +268,27 @@ int SrsHlsMuxer::deviation()
268268}
269269
270270srs_error_t SrsHlsMuxer::initialize ()
271+ {
272+ return srs_success;
273+ }
274+
275+ srs_error_t SrsHlsMuxer::on_publish (SrsRequest* req)
271276{
272277 srs_error_t err = srs_success;
273-
278+
274279 if ((err = async->start ()) != srs_success) {
275280 return srs_error_wrap (err, " async start" );
276281 }
277-
282+
278283 return err;
279284}
280285
286+ srs_error_t SrsHlsMuxer::on_unpublish ()
287+ {
288+ async->stop ();
289+ return srs_success;
290+ }
291+
281292srs_error_t SrsHlsMuxer::update_config (SrsRequest* r, string entry_prefix,
282293 string path, string m3u8_file, string ts_file, srs_utime_t fragment, srs_utime_t window,
283294 bool ts_floor, double aof_ratio, bool cleanup, bool wait_keyframe, bool keys,
@@ -899,8 +910,11 @@ srs_error_t SrsHlsController::on_publish(SrsRequest* req)
899910
900911 // TODO: FIXME: support load exists m3u8, to continue publish stream.
901912 // for the HLS donot requires the EXT-X-MEDIA-SEQUENCE be monotonically increase.
913+
914+ if ((err = muxer->on_publish (req)) != srs_success) {
915+ return srs_error_wrap (err, " muxer publish" );
916+ }
902917
903- // open muxer
904918 if ((err = muxer->update_config (req, entry_prefix, path, m3u8_file, ts_file, hls_fragment,
905919 hls_window, ts_floor, hls_aof_ratio, cleanup, wait_keyframe,hls_keys,hls_fragments_per_key,
906920 hls_key_file, hls_key_file_path, hls_key_url)) != srs_success ) {
@@ -924,6 +938,10 @@ srs_error_t SrsHlsController::on_publish(SrsRequest* req)
924938srs_error_t SrsHlsController::on_unpublish ()
925939{
926940 srs_error_t err = srs_success;
941+
942+ if ((err = muxer->on_unpublish ()) != srs_success) {
943+ return srs_error_wrap (err, " muxer unpublish" );
944+ }
927945
928946 if ((err = muxer->flush_audio (tsmc)) != srs_success) {
929947 return srs_error_wrap (err, " hls: flush audio" );
0 commit comments