Skip to main content
Participant
November 5, 2010
Question

Stream.play(live_from_FMLE, -1, 4500, true) got no NetStream.Play.Start

  • November 5, 2010
  • 1 reply
  • 687 views

Hi,

I am stuck on one random issue that I really need your help.

I got a bunch of live stream from FMLE, say: "FMLE_channel1", "FMLE_channel2", "FMLE_channel3". And then on the server side, I created several corresponding republished stream called "channel1", "channel2", "channel3".

On periodical basis, we call Stream.get("channel1").play("FMLE_channel1", -1, 10, true) every 10 seconds. Similar things were done on the second channel & third channel.

Soon after the above Stream.get("channel1").play() call, I should get the following events in sequence:

info :NetStream.Unpublish.Success
info :NetStream.Publish.Start
info :NetStream.Play.Reset
info :NetStream.Play.Start

In the above case all are happy. Clients can view channel1, channel2, channel3 well.

But then after a while, one of the three channels, in most case it would be channel1, will not be viewable. With the server trace info, I found that after the Stream.get("channel1").play() call, only the following two events exists:

info :NetStream.Unpublish.Success
info :NetStream.Publish.Start
i.e. I was missing the play.reset and play.start event.

I further checked and confirmed that the FMLE was publishing all three channels fine to the server. I was able to view the "FMLE_channel1" from flash clients, but not the republished "channel1".

Can anyone help to solve the problem please? the version is FMS 3.5.0. Thanks.

    This topic has been closed for replies.

    1 reply

    Participating Frequently
    November 8, 2010

    Did you check any other logs - like core.00.log ,edge.00.log or master.00.log - do you see anything there when republishing stops.

    Also I am curious why do you want to code the way you have coded on server-side, i mean why do you make call to Stream.get() periodically - you can as well assign return object of Stream.get and use it further in your code instead of calling it again and again. You can then use this object to periodically call play.

    Also can you upgrade to 3.5.4 if possible and see if you get same issue

    Participant
    November 8, 2010

    Thank you very much for your effort in helping.

    1. How do I check the said logs?

    2. I will upgrade to 3.5.4 and have a try. Unfortunately I am out of town now and could not do it in the new few days.

    3. When you asked about repeatedly calling of Stream.get(), are you implying some kind of memory leaks? Or do you have other implications in your mind? We are handling an array of broadcasting channels. Of course, we could've saved the handles in an array, but we did it the way as it is now for the sake of simplicity.

    4. Another clue/observation: say for a F4V clip of 44 seconds (e.g. name it as example.f4v). If I call Stream.get("channel1").play("mp4:sample.f4v", -1, 45, true) at one point, and after 45 seconds, if I do another call of Stream.get("channel1").play("mp4:sample.f4v", -1, 45, true), "channel1" will show no video after the second call. Please note in this example, the video length is actually 44 seconds, but I treat it as if it is 45 seconds.

    Your continued help will be highly appreciated!

    Participating Frequently
    November 9, 2010

    1. You should find logs at <FMSInstalledDirectory>/logs

    2. Please try it out and you can post findings here or on new thread

    3. I did not imply memory leaks - i would find other way of writing little more simpler - i have not tried your way of writing code so don't know if it has any untoward implication

    4. I did not get your 4th question properly, if you trying to play any recorded clip - you should use "0" as second parameter and not "-1"