Transcode a transcoded stream with Wowza 4.2

Hello,

I’d like to know if there is a way to transcode a transcoded stream. I explain :

I have a stream provided by playlist with custom application (created with Wowza API) which named “_stream” which encode a stream named “_base” and the transcoder template is named “_stream” (with name matching enabled). I put some overlays on the stream “_base” and I’d like to transcode it to be able to have multirate streams (for example “web”), the transcoder template is named “_base”. So 2 transcoder instances (with Wowza 4.2 Monthly Licence it is now unlimited).

But I have a problem : I can play “_stream” and “_base” but not “web” (the log show nothing about “_base” transcoding, “_stream” has log for transcoding)… Why “_base” transcoder instance not launch ??? Must it be launched only after next one ?

Here is the log of launch process :

Configure logging: file:///D:/Wowza/conf/log4j.properties
INFO server comment - onServerConfigLoaded
INFO server comment - onServerCreate
INFO server server-start Wowza Streaming Engine 4 Monthly Edition 4.2.0.01 build15394 -
INFO server comment - Server License Key: ENGM4-XXXXX-XXXXX-XXXXX-XXXXX-jvbQU
INFO server comment - Maximum Connections: Unlimited
INFO server comment - Maximum Incoming Streams: Unlimited
INFO server comment - Transcoder Streams Available: Unlimited
INFO server comment - Transcoder Watermark: No
INFO server comment - nDVR Available: Yes
INFO server comment - DRM Available: Yes
INFO server comment - HTTP Origin Available: Yes
INFO server comment - Push Publish Available: Yes
INFO server comment - REST API Available: Yes
INFO server comment - Hardware Available Processors: 8
INFO server comment - Hardware Physical Memory [free/total]: 12957MB/18429MB
INFO server comment - Hardware Swap Space [free/total]: 30034MB/36857MB
INFO server comment - Max File Descriptor Count: Unlimited
INFO server comment - OS Name: Windows 7
INFO server comment - OS Version: 6.1
INFO server comment - OS Architecture: amd64
INFO server comment - OS CPU: amd64
INFO server comment - Java Name: Java HotSpot(TM) 64-Bit Server VM
INFO server comment - Java Vendor: Oracle Corporation
INFO server comment - Java Version: 1.7.0_60
INFO server comment - Java VM Version: 24.60-b09
INFO server comment - Java Spec Version: 1.7
INFO server comment - Java Home: C:\Program Files\Java\jre7
INFO server comment - Java Max Heap Size: 683MB
INFO server comment - Java Architecture: 64
INFO server comment - Java Locale[user.language]: fr
INFO server comment - Java Locale[user.country]: FR
INFO server comment - Java Locale[user.variant]: 
INFO server comment - Java Locale[file.encoding]: Cp1252
INFO server comment - Java Timezone[user.timezone]: Europe/Paris
INFO server comment - Java Args[0]: -Xmx768M
INFO server comment - Java Args[1]: -Dcom.wowza.wms.AppHome=D:/Wowza
INFO server comment - Java Args[2]: -Dcom.wowza.wms.ConfigHome=D:/Wowza
INFO server comment - Java Args[3]: -Dcom.sun.management.jmxremote=true
INFO server comment - Java Args[4]: -Dcom.wowza.wms.native.base=win
INFO server comment - Java Args[5]: -Dfile.encoding=Cp1252
INFO server comment - Server native.platform: win
INFO server comment - Server threads[h/t]: 120/80
INFO server comment - RESTServer: Bind attempt ([any]:8087)
INFO server comment - RESTServer: Bind successful ([any]:8087)
INFO server comment - Wowza REST API started
INFO server comment - RESTServer: Using configs from:D:/Wowza/
INFO server comment - RESTServer: SSL:No
INFO server comment - RESTServer: BasicAuth:No
INFO server comment - RESTServer: Digest:Yes
INFO server comment - RESTServer: XML Viewer:No
INFO server comment - REST Documentation Server has been disabled.
INFO server comment - CMDInterface now listening: [any]:8083
INFO server comment - MediaCache[MediaCache]: Thread pool size: [writer/readahead]:4/2
INFO server comment - MediaCache[MediaCache]: MAX Pending size: [writer/readahead]:500M/25M
INFO server comment - MediaCache[MediaCache]: Add store: path:D:/Wowza/mediacache maxSize:10737418240
INFO server comment - MediaCache[MediaCache]: Add source[dvrorigin]: prefix:dvrorigin/ basePath:http://
INFO server comment - MediaCache[MediaCache]: Flushing cache: start
INFO server comment - MediaCache[MediaCache]: Flushing cache: done
INFO server comment - MediaCache[MediaCache]: Start MediaCache GC
INFO server comment - MediaCache[MediaCache]: Started
INFO server comment - REST API: ready
INFO vhost vhost-start _defaultVHost_ -
INFO server comment - _defaultVHost_ threads[h/t]:0/0 home:D:/Wowza
INFO vhost comment _defaultVHost_ Bind attempt ([any]:1935:4)
INFO vhost comment _defaultVHost_ Bind successful ([any]:1935)
INFO vhost comment _defaultVHost_ Bind attempt ([any]:8086:2)
INFO vhost comment _defaultVHost_ Bind successful ([any]:8086)
INFO server comment - Server.startShutdownHook: Start server shutdown hook
INFO server comment - onServerInit
INFO server comment - MediaCasterStreamValidator.init[tixtv/_definst_]: Started
INFO server comment - ModuleCoreSecurity.onAppStart[tixtv/_definst_]: Publish: AllowedEncoders: securityPublishValidEncoders:Wirecast/|FME/|FMLE/|Wowza GoCoder*|Lavf/|UA Teradek/|KulaByte/
INFO server comment - ModuleCoreSecurity.onAppStart[tixtv/_definst_]: Publish: block duplicate stream names : false
INFO server comment - ModuleCoreSecurity.onAppStart[tixtv/_definst_]: Play: Max Connections: securityPlayMaximumConnections:100
INFO server comment - ModuleCoreSecurity.onAppStart[tixtv/_definst_]: Play: SecureConnection: securityPlayRequireSecureConnection:false
INFO server comment - ModuleCoreSecurity.onAppStart[tixtv/_definst_]: Play: securitySecureTokenVersion property is missing, using SecureToken Version 1, play security enabled for RTMP only
INFO server comment - onAppStart: tixtv/_definst_
TiXTVListener.onAppStarted
INFO application app-start _definst_ tixtv/_definst_
TiXTV.onStreamCreate
INFO stream create - -
INFO stream publish _stream -
INFO server comment - Stream.switch[tixtv/_definst_/_stream]: index: 0 name:_default start:0 length:-1
Delayed timer launch for transcoder to start...
INFO server comment - StatsManager:startManager() Enabled=true
INFO server comment - Wowza Streaming Engine is started!
TiXTVStreamListener.onPlaylistItemStart
INFO server comment - TranscoderSessionNative.loadLibrary: Load transcoder list file: D:\Wowza\lib-native\win64\transcoder.list
TiXTVTranscoderCreateNotifier.onLiveStreamTranscoderCreate : _stream
INFO server comment - LiveStreamTranscoder.init[tixtv/_definst_/_stream]: Load transcoder template: file:///D:/Wowza/transcoder/templates/_stream.xml
INFO server comment - JNI:VideoEncoderH264QuickSyncHost[global]: QuickSync: hardware acceleration is not available (software only)
INFO server comment - JNI:TranscoderSession.isCUDAAvailable[_defaultVHost_:tixtv/_definst_/_stream]:NVidia hardware acceleration is available:  NVENC, NVCUVID, CUDA[decode]
INFO server comment - JNI:NVidiaCUDAUtils.logCUDAGPUInfo[_defaultVHost_:tixtv/_definst_/_stream]: GPU[0]: name:"GeForce GTX 770" version:3.0 driver:7000 memory:2048MB processors:8 cores:1536 clockRate:1189MHz
INFO server comment - JNI:TranscoderSession.isQuickSyncAvailable[_defaultVHost_:tixtv/_definst_/_stream]: Intel Quick Sync hardware acceleration is NOT available.
TiXTV.onStreamCreate
INFO stream create - -
INFO stream publish _base -
INFO server comment - JNI:TranscoderSession.audioDecoderCreate[_defaultVHost_:tixtv/_definst_/_stream]: Create audio decoder: AAC: default
INFO server comment - TranscoderWorkerVideoDecoder.handlePacket[_defaultVHost_:tixtv/_definst_/_stream: decodeIterations:0]: First codecConfig frame: {MediaCodecInfoVideo: codec:H264, profile:High, level:3.2, frameSize:1280x720, displaySize:1280x720, frameRate:25,000000}
INFO transcoder decoder-audio-start _stream {codec:AAC, objectType:LC, sampleRate:48000, channels:2}
INFO server comment - JNI:TranscoderSession.videoDecoderCreate[_defaultVHost_:tixtv/_definst_/_stream]: Create video decoder: H.264: default
INFO server comment - JNI:TranscoderSession.audioEncoderAdd[_defaultVHost_:tixtv/_definst_/_stream:_base]: Create audio encoder: AAC: default
INFO server comment - JNI:AudioEncoderAAC.initialize[_defaultVHost_:tixtv/_definst_/_stream:_base]: channels:2 sampleRate:48000 bitRate:128000
INFO transcoder encoder-audio-start _stream {name:"_base", bitrate:128000, codec:AAC, objectType:LC, sampleRate:48000, channels:2}
INFO transcoder decoder-video-start _stream {codec:H264, profile:High, level:3.2, frameSize:1280x720, displaySize:1280x720, frameRate:25.0}
INFO server comment - JNI:TranscoderSession.videoEncoderAdd[_defaultVHost_:tixtv/_definst_/_stream:_base]: Create video encoder: H.264: NVENC
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_stream]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_stream]: audioGroupCount: 3
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_stream]: playlistChunkCount:3
INFO server comment - MediaStreamMap.getLiveStreamPacketizer[tixtv/_definst_/_stream]: Create live stream packetizer: cupertinostreamingpacketizer:_stream
INFO server comment - CupertinoPacketHandler.startStream[tixtv/_definst_/_stream]
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_stream]: Video codec:H264 isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_stream]: Audio codec:AAC isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_stream][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_stream][avc1.100.32]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Main/Level 3.1 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:High, level:3.2, frameSize:1280x720, displaySize:1280x720, frameRate:25.0, PAR:1:1}
TiXTVTranscoderActionNotifier.onSessionVideoEncodeSetup : _base
INFO server comment - JNI:VideoDecoderH264.updateDecodeInfo[_defaultVHost_:tixtv/_definst_/_stream]: aspect:16x9 frame:1280x720 display:1280x720 frameRate:25 deinterlace:0
INFO server comment - TranscoderWorkerVideoDecoder.handlePacket[_defaultVHost_:tixtv/_definst_/_stream: decodeIterations:0]: First video frame: size:4429 timecode:40 frameType:1
INFO server comment - JNI:TranscoderSession.videoDecoderDecode[_defaultVHost_:tixtv/_definst_/_stream]: Decoder frame size: frame:1280x720 display:1280x720 bufferSize:1382400
INFO transcoder encoder-video-start _stream {name:"_base", bitrate:5500000, codec:H264, profile:High, level:3.1, frameSize:1280x720, displaySize:1280x720, frameRate:25.0}
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_base]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_base]: audioGroupCount: 3
INFO server comment - LiveStreamPacketizerCupertino.init[tixtv/_definst_/_base]: playlistChunkCount:3
INFO server comment - MediaStreamMap.getLiveStreamPacketizer[tixtv/_definst_/_base]: Create live stream packetizer: cupertinostreamingpacketizer:_base
INFO server comment - CupertinoPacketHandler.startStream[tixtv/_definst_/_base]
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_base]: Video codec:H264 isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_base]: Audio codec:AAC isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_base][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[tixtv/_definst_/_base][avc1.100.31]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Main/Level 3.1 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:High, level:3.1, frameSize:1280x720, displaySize:1280x720, frameRate:25.0, PAR:1:1}
TiXTVTimer.run
TiXTVListener.playNext
TiXTVListener.forcePlay('_default', 0, -1)
Play : _default

Best regards.

Hi

That won’t work if it’s in the same application, otherwise you could potentially loop transcodes over and over with a non-restrictive template.

I’d suggest you duplicate the newly transcoded _base stream to another application using ModuleDuplicateStreams. and configure the other application with transcoder as well, so that it uses the _base, or similar, template.

Daren

Hello,

Ah ok. Got it. Will the other transcoder instance have access to the streams of my main app transcoder instance ? What must I be careful of ?

Thanks.

Best regards.

Hello,

I did some tests with ModuleDuplicateStreams, it works, but it looks like it need a lot of CPU resources…

My goal was to put some overlays in “_base” stream (including OverlayImage, which is CPU only) from “_stream” (the playlist) and then put some transcoder templates for multiple bitrate.

My overlays are changing in my main app and for one of the templates in aux app (which have duplicated stream) need to show or not only one overlay image. How can I ask in the aux app the value of a main app variable ??? Didn’t understand well objects sharing between 2 app…

It could be more easy to be able to transcode several streams in one app !!!

Thanks a lot.

Best regards.