Hi,
I have an application based on ModuleAddAudioTrack.
The differences are:
I start the live video source on appStart to keep it running and I use a IMediaStreamNameAliasProvider.
I start live stream source at appStart using:
appInstance.setApplicationTimeout(0);
appInstance.getMediaCasterStreams().acquire(“video-source”);
as in the ModuleAddAudioTrack I create 2 new stream on “video-source” publish event.
I create this 2 stream as in example module using:
publisher = Publisher.createInstance(this.appInstance);
publisher.setFileExtension(“flv”);
publisher.setStreamType(“live”);
publisher.publish(“video”, “live”);
audioSource = Stream.createInstance(this.appInstance, “video-audio");
playlist = new Playlist(“audiosource”);
playlist.setRepeat(true);
playlist.addItem(audioSourcePath, 0, -1);
playlist.open(this.audioSource);
It works.
I can get the “video”, “video-source” , “video-audio” streams using all protocols.
But behind the scene something strange happens when I call “video” and “video-audio” using RTSP or RTMP
It works showing the expected content o the player, but Wowza keeps a MediaCaster instance “video” or “video-audio” trying to connect a stream source. I can see it because Mediacaster events I am logging and because of logging I have in resolveStreamAlias. As this method do not have a valid replies for “video” and “video-audio” I return the name (I’ve tried return null too). it causes logs of MediaCaster connectFailure.
As the the streams named “video” and “video-audio” are already running correctly (I can see it through the player and WowzaStreamEngineManager), it should not start the MediaCaster, right?
Using HLS protocol something similar happens, but instead start a media caster I get successive calls on resolvePlayAlias.
Here is a resume of my logs:
- After start video-source on App
video-source onMediaCasterCreate
video-source onConnectStart
video-source resolveStreamAlias
video-source onMediaStreamCreate
video-source onSetSourceStream
video-source onPublish
video onMediaStreamCreate
video-source onConnectSuccess
video onPublish
video-audio onMediaStreamCreate
video-audio onPublish
- After connect video-source using RTSP or RTMP client - THIS STREAM RUNS AS EXPECTED
video-source onMediaStreamCreate
video-source resolvePlayAlias
video-source MediaStreamMediaCasterPlay: startPlay
video-source onRegisterPlayer
video-source onPlay
- After close RTSP or RTMP connection
video-source onUnRegisterPlayer
video-source onStop
video-source onDestroy
- After connect videousing RTSP or RTMP - NOW MEDIACASTER START WITH NO REASON this strea in already published
video onMediaStreamCreate
video resolvePlayAlias - HERE I RETURN “video”, right?
video MediaStreamMediaCasterPlay: startPlay
video onMediaCasterCreate - I THINK IT SHOULD NOT START
video onRegisterPlayer
video MediaCaster.onConnectStart
video resolveStreamAlias - HERE I RETURN “video”. I THINK THIS METHOS SHOULD NOT BE CALLED
video MediaCaster.onConnectFailure
…
video MediaCaster.onConnectStart
video resolveStreamAlias - HERE I RETURN “video”. I THINK THIS METHOS SHOULD NOT BE CALLED
video MediaCaster.onConnectFailure
- After close RTSP or RTMP connection
video onUnRegisterPlayer
video onStop
video onDestroy
What I am missing the avoid to start the MediaCaster unnecessarily? The stream are already running.
I am missing something?
My application streamtype is “rtp-live-lowlatency”.
Does it happen because streamtype for “video” should be “live”? If it is the problem How do a set streamType on steam name basis?
Thanks.
Rafael Sobral