55 define:: { frame_type, FlvData } ,
66 demuxer:: { FlvAudioTagDemuxer , FlvVideoTagDemuxer } ,
77 } ,
8+ streamhub:: { define:: { StreamHubEventSender , StreamHubEvent } , stream:: StreamIdentifier } ,
89 xmpegts:: {
910 define:: { epsi_stream_type, MPEG_FLAG_IDR_FRAME } ,
1011 ts:: TsMuxer ,
@@ -30,7 +31,11 @@ pub struct Flv2HlsRemuxer {
3031 audio_pid : u16 ,
3132
3233 m3u8_handler : M3u8 ,
34+ event_producer : Option < StreamHubEventSender > ,
35+ app_name : String ,
36+ stream_name : String ,
3337 aof_ratio : i64 ,
38+
3439}
3540
3641impl Flv2HlsRemuxer {
@@ -39,6 +44,7 @@ impl Flv2HlsRemuxer {
3944 app_name : String ,
4045 stream_name : String ,
4146 need_record : bool ,
47+ event_producer : Option < StreamHubEventSender > ,
4248 path : String ,
4349 aof_ratio : i64 ,
4450 ) -> Self {
@@ -68,8 +74,10 @@ impl Flv2HlsRemuxer {
6874 video_pid,
6975 audio_pid,
7076
71- m3u8_handler : M3u8 :: new ( duration, 6 , app_name, stream_name, need_record, path) ,
72-
77+ m3u8_handler : M3u8 :: new ( duration, 6 , app_name. clone ( ) , stream_name. clone ( ) , need_record, path) ,
78+ event_producer,
79+ app_name,
80+ stream_name,
7381 aof_ratio,
7482 }
7583 }
@@ -162,6 +170,18 @@ impl Flv2HlsRemuxer {
162170 }
163171 let data = self . ts_muxer . get_data ( ) ;
164172
173+ if let Some ( segment) = self . m3u8_handler . segments . back ( ) {
174+ let identifier = StreamIdentifier :: Rtmp { app_name : self . app_name . clone ( ) , stream_name : self . stream_name . clone ( ) } ;
175+ let hub_event = StreamHubEvent :: OnHls { identifier : identifier. clone ( ) , segment : segment. clone ( ) } ;
176+ if let Some ( producer) = self . event_producer . clone ( ) {
177+ if let Err ( err) = producer. send ( hub_event) {
178+ log:: error!( "send notify on_hls event error: {}" , err) ;
179+ }
180+ } else {
181+ log:: warn!( "event_producer is None, cannot send on_hls event" ) ;
182+ }
183+ log:: info!( "on_hls success: {:?}" , identifier) ;
184+ }
165185 self . m3u8_handler
166186 . add_segment ( dts - self . last_ts_dts , discontinuity, false , data) ?;
167187 self . m3u8_handler . refresh_playlist ( ) ?;
0 commit comments