@@ -268,16 +268,27 @@ int SrsHlsMuxer::deviation()
268
268
}
269
269
270
270
srs_error_t SrsHlsMuxer::initialize ()
271
+ {
272
+ return srs_success;
273
+ }
274
+
275
+ srs_error_t SrsHlsMuxer::on_publish (SrsRequest* req)
271
276
{
272
277
srs_error_t err = srs_success;
273
-
278
+
274
279
if ((err = async->start ()) != srs_success) {
275
280
return srs_error_wrap (err, " async start" );
276
281
}
277
-
282
+
278
283
return err;
279
284
}
280
285
286
+ srs_error_t SrsHlsMuxer::on_unpublish ()
287
+ {
288
+ async->stop ();
289
+ return srs_success;
290
+ }
291
+
281
292
srs_error_t SrsHlsMuxer::update_config (SrsRequest* r, string entry_prefix,
282
293
string path, string m3u8_file, string ts_file, srs_utime_t fragment, srs_utime_t window,
283
294
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)
899
910
900
911
// TODO: FIXME: support load exists m3u8, to continue publish stream.
901
912
// 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
+ }
902
917
903
- // open muxer
904
918
if ((err = muxer->update_config (req, entry_prefix, path, m3u8_file, ts_file, hls_fragment,
905
919
hls_window, ts_floor, hls_aof_ratio, cleanup, wait_keyframe,hls_keys,hls_fragments_per_key,
906
920
hls_key_file, hls_key_file_path, hls_key_url)) != srs_success ) {
@@ -924,6 +938,10 @@ srs_error_t SrsHlsController::on_publish(SrsRequest* req)
924
938
srs_error_t SrsHlsController::on_unpublish ()
925
939
{
926
940
srs_error_t err = srs_success;
941
+
942
+ if ((err = muxer->on_unpublish ()) != srs_success) {
943
+ return srs_error_wrap (err, " muxer unpublish" );
944
+ }
927
945
928
946
if ((err = muxer->flush_audio (tsmc)) != srs_success) {
929
947
return srs_error_wrap (err, " hls: flush audio" );
0 commit comments