I use Transcoder AddOn to transcode h.264/G.711 to h.264/ACC streams. Transcoder has ~40 incoming streams. It works for some time (10-15 minutes) then memory starts leaking. In wowzamediaserver_error.log there are several records:
WARN server comment 2013-06-26 17:39:17 - - - - - 2332.832 - - - - - - - - Publisher.publish: Stream name already in use: camera_00306F843360_code
WARN server comment 2013-06-26 17:39:49 - - - - - 2365.26 - - - - - - - - Publisher.publish: Stream name already in use: camera_00306F8427C0_code
WARN server comment 2013-06-26 17:40:31 - - - - - 2407.315 - - - - - - - - Publisher.publish: Stream name already in use: camera_00306F843360_code
WARN server comment 2013-06-26 18:14:10 - - - - - 4426.142 - - - - - - - - Publisher.publish: Stream name already in use: 474_20130625132401828_code
Stream name "*_code" is for transcoded stream.
I think that when incoming stream with the same name reconnects Transcoder it can not close previous stream. Is it possible to purge previous stream right after it disconnects from Transcoder with minimum timeout?
Is Transcoder AddOn the one who logs "Publisher.publish: Stream name already in use..." messages?
Or is the MediaCaster stream being reset before this happens? Do you have the
MediaCaster Monitor enabled? If that is the case, can you upgrade to Wowza 3.6.2? There were some Transcoder changes. There is 3x to 3.6.2 patch here on
Production Build page
"NetStream.Publish.Denied" is a notification sent to the RTMP encoder, it is not logged in Wowza. That module does write to the log just before sending that notificaiton:
getLogger().info("ModuleBlockDuplicateStreamNames.publish["+appInstance.getContextStr()+"]: Stream name is already in use: "+streamName);
What do you mean by "memory leak"? Transcoding uses a lot of cpu and memory. Take a look at these
Transcoder benchmark tests for comparison, to see what is realistic for your setup
Remember that you have to leave room for playback. It is common to use Live Repeater (origin/edge) configuration with the Transcoder, where the transcoding is done on the origin and the edge(s) handle playback clients. This leaves more room on the origin for transcoding.