Hi,
I’m using multiple origins and egdes, all of them use the same shared disc for the streams storage path.
For each new stream in the origin server, I want to generate a smil file in the shared streams storage directory.
I want the smill to match the ngrp:myStream_all.
That’s the code I wrote:
class LiveStreamTranscoderListener implements ILiveStreamTranscoderNotify {
@Override
public void onLiveStreamTranscoderCreate(ILiveStreamTranscoder liveStreamTranscoder, IMediaStream mediaStream) {
}
@Override
public void onLiveStreamTranscoderDestroy(ILiveStreamTranscoder liveStreamTranscoder, IMediaStream mediaStream) {
}
@Override
public void onLiveStreamTranscoderInit(ILiveStreamTranscoder liveStreamTranscoder, IMediaStream mediaStream) {
IApplicationInstance appInstance = liveStreamTranscoder.getAppInstance();
String streamName = mediaStream.getName();
String appName = appInstance.getContextStr();
getLogger().debug(“LiveStreamEntry#LiveStreamTranscoderListener.onLiveStreamTranscoderInit [” + appName + “/” + mediaStream.getName() + “]”);
// Itried all the three options below:
MediaList mediaList = MediaListUtils.parseMediaList(appInstance, streamName, “smil”, null);
// MediaList mediaList = MediaListUtils.parseMediaList(appInstance, streamName + “_all”, “smil”, null);
// MediaList mediaList = MediaListUtils.parseMediaList(appInstance, “ngrp:” + streamName + “_all”, “smil”, null);
if (mediaList == null) {
getLogger().error("LiveStreamEntry#LiveStreamTranscoderListener.onLiveStreamTranscoderInit: MediaList not found: " + appName + “/” + streamName);
return;
}
String smil = mediaList.toSMILString();
String filePath = appInstance.getStreamStoragePath() + File.separator + streamName + “_all.smil”;
try {
PrintWriter out = new PrintWriter(filePath);
out.print(smil);
out.close();
} catch (FileNotFoundException e) {
getLogger().error(“LiveStreamEntry#LiveStreamTranscoderListener.onLiveStreamTranscoderInit: Failed writing to file [” + filePath + "]: " + e.getMessage());
return;
}
getLogger().info(“LiveStreamEntry#LiveStreamTranscoderListener.onLiveStreamTranscoderInit: Created smil file [” + filePath + "] for stream " + appName + “/” + streamName + “:\n” + smil + “\n\n”);
}
}
public void onAppStart(IApplicationInstance appInstance) {
appInstance.addLiveStreamTranscoderListener(new LiveStreamTranscoderListener());
}
When I access the medialist tool:
http://wowza-01.dev:8086/medialist?streamname=ngrp:0_xmk3txay_all&application=kLive/p&format=smil
I get a valid smil:
But when I generate the smil file from the code, I get empty smil:
Is there a way to do it?
Thanks,
T.