Results 1 to 4 of 4

Thread: IMediaStreamActionNotify3 vs streams started with MediaCasterStreamManager

  1. #1

    Question IMediaStreamActionNotify3 vs streams started with MediaCasterStreamManager

    Hi!

    We have MediaCasterStreamManager instance starting some streams with startStream(name, type) method.

    We have void ModuleBase:: onStreamCreate(IMediaStream stream) overloaded, to add an IMediaStreamActionNotify3 to the stream when its created.

    Now once we get notifications about stream events, we would like to monitor somehow if stream was succesfully started, is running healthy, or is down for some reason.

    onPublish happens regardless of stream health, if we startStream("test", "thisURLdoesNotExist") it still throws onPublish. Ok, lets say we can use onMetaData, onCodecInfoAudio and onCodecInfoVideo as those are fired only if URL is right and stream is actually published.

    But how to determine when/if it goes down for some reason (is not available from URL anymore)? We can see stream resets by timeout, but no event is fired (i suppose it have to be onUnPublish/onPublish pair fired on every timeout reset?)

    We have older implementation where streams are started from Wowza user interface, not using MediaCasterStreamManager, and it efficiently fires onPublish/onUnPublish events on timeout reset.

    Many thanks, Alex.

  2. #2
    Join Date
    May 2013
    Posts
    681

    Default

    Hello Alex

    In thinking about this scenario, one way is to check (on another thread) the stream in question and get the latest packet and see if its available. If it is then you can at least be assured data is coming into Wowza. It might look something like the following:
    IMediaStream stream = appInstance.getStreams().getStream(streamName);
    if(stream.getLastPacket() != null && stream.getLastPacket().getAbsTimecode()>0){
       // good to go...
    }
    Thanks,

    Matt

  3. #3

    Default

    Thanks Matt, it makes sense.

    But i wonder why does behaviour differs with streams started with GUI and with MediaCaster? Is it by design, or we do something wrong, or it is just a bug?

    Thanks, Alex.

  4. #4

    Default

    Hi,

    onPublish is fired when the mediaCaster is first started. This is the same for both the API methods and the GUI (starting streams from the Stream Files page).
    onUnPublish is fired when the mediaCaster is shut down.

    To capture when the mediaCaster actually starts or stops the connection and stream from the remote server, you will also need to implement the IMediaCasterNotify2 interface. This interface provides event methods that will fire for all of the mediaCaster events.

    The ones you will primarily be interested in are
    onConnectStart - fired when a connection or reconnection is started but before it actually starts
    onConnectSuccess - fired once the connection is successfully made
    onConnectFailure - fired if the connection attempt fails
    onStreamStart - fired when the stream actually starts running
    onStreamStop - fired when the stream stops running

    When a mediaCaster first starts, you will see the following event order (assuming a successful start)
    onConnectStart -> onConnectSuccess -> onStreamStart

    If the mediaCaster resets, you will see onStreamStop -> onConnectStart -> onConnectSuccess hopefully followed by onStreamStart

    If the remote stream cannot be located then you will see onConnectStart -> onConnectSuccess repeated each time the mediaCaster resets until it shuts down.

    If the remote server cannot be located, you will see onConnectStart -> onConnectFailure repeated each time it resets.

    You set your module to use the interface by calling the appInstance.addMediaCasterListener form your module. This only needs to be done once and probably from the onAppStart method.

    ModuleLoopUntilLive in the Module Collection shows how to use the interface and also detect in the onPublish & onUnPublish methods if the workflow should be handed off to the mediaCaster listener.

    Roger.

Similar Threads

  1. Hide streamName via IMediaStreamNameAliasProvider2 and MediaCasterStreamManager
    By Jimbolino in forum Server-side Modules and Code Samples Discussion
    Replies: 2
    Last Post: 04-22-2013, 09:14 AM
  2. Replies: 14
    Last Post: 02-08-2012, 06:39 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •