I hope someone will help me with this, as I've been tearing my hair out searching for a solution.
Let's say I have a bunch of consumers viewing a single live stream being streamed by my Wowza Media Server. The video and audio originate from Adobe Flash Media Live Encoder, running at some other location.
Now, what I want to do is issue a command, probably on the server that is running Wowza, which seamlessly at that moment causes all the clients watching the live stream to start receiving the content of some pre-recorded video file on the server.
The content from the Adobe FMLE encoder will now be ignored.
A converse command, issued at some point, would now seamlessly switch the consumers back to seeing the content from the encoder.
The client application is JWPlayer (or similar) flash player running on the consumer's browser. As far as that client app is concerned, it has connected to a stream with a particular URL and stream name. The fact that this stream might happen to derive from the encoder or from the pre-recorded video file is irrelevant and unknowable to the client app. It's all one live stream.
In other words, what changes is the source from which Wowza obtains the data to be streamed: either the live encoder, or the pre-recorded video file.
Note that when we have switched to the pre-recorded program, it does NOT behave like video on demand. If a client establishes a connection to the Media server five minutes after the server switched from encoder to pre-recorded, the client starts receiving material 5 minutes into the pre-recorded video. The pre-recoded material is thus what may be termed "pseudo-live".
Ideally, I'd like to have more than one pre-recorded video file that I can switch to. It would also be useful to have the ability for pre-recorded material to automatically loop, if it reaches the end.
I would make sure the pre-recorded files have the same encoding characteristics as that which arrives from the encoder.
Anyone know if such a thing is possible?
Or, if someone has a commercial solution, I would be willing to pay.
Yes, you can do that with Wowza using the Stream class. This allows you stream pre-recorded content as live streams, and to mix live streams, everything you described can be done. And there are two examples you can work with.
This scheduler is a way of predefining a schedule in a smil file. This runs when the server starts. Items that have a schedule time in the past will start right away, and of course if the schedule is in the future, the stream will start then, based on the server's clock. It is very precise, the stream will start to the second as scheduled. You can mix live and pre-recorded content. Items which have an actual live source get "start" value of "-2". It is a good idea to have very similar encoding for video and audio between items, for live and pre-recorded items. This is used in production by many Wowza administrators.
This Stream controller is what will allow you to do this switching that you describe. You might set up a schedule, then operate an event with this. The client controller part of this, a Flash application, will do everything you describe, HOWEVER, it is missing two things: action feedback and state info. I.e., it's a little like driving with a blindfold. You can see one stream at a time, and see the effect in real-time, but that's all there is.