HLS + Transcoder plugin failing with 403 error

Hello!

We are trying to set up Wowza to make our way to AppStore and we have encountered some problems with it. The setup sequence is the one described in manuals:

  1. Set up and run Wowza Transcoder as described here: https://www.wowza.com/docs/how-to-set-up-and-run-wowza-transcoder-for-live-streaming. We use the “transrate.xml” file.

  2. We have MPEG-TS source with H.264 video and AAC audio so we use ffmpeg to transport our video to the wowza server:

ffmpeg -i "http://10.40.35.18:6901/stream/hd.ts" -vcodec copy  -strict experimental -acodec copy -f mpegts udp:/.0.0.1:10000?pkt_size=1316

Server starts OK and it produces correct playlist:

#EXTM3U
#EXT-X-VERSION:2
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=946000,CODECS="avc1.77.30,mp4a.40.2",RESOLUTION=640x360
/live/_definst_/mp4:kommersant.stream_360p/playlist.m3u8?wowzasessionid=29602303
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=296000,CODECS="avc1.66.12,mp4a.40.2",RESOLUTION=284x160
/live/_definst_/mp4:kommersant.stream_160p/playlist.m3u8?wowzasessionid=29602303

Either of these playlists are working: we can open them in Mobile Safari / our iPad video app. But when we’re trying to access another playlist with the same session ID, it ends up with 403 error and following message in the log:

WARN server comment 2012-02-16 14:23:26 - - - - - 238.633 - - - - - - - - HTTPStreamerAdapterCupertinoStreamer.onPlaylist[live/_definst_/mp4:kommersant.stream_360p/playlist.m3u8?wowzasessionid=29602303]: Not valid stream name [29602303][_defaultVHost_:live/_definst_/mp4:kommersant.stream_360p]: _defaultVHost_:live/_definst_/mp4:kommersant.stream_160p

. After a while the failing playlist starts working until we try to access the second one.

Some clients like iPod video rarely trigger this error, but the stream validator and visiting playlist URLS from browser fails almost always.

Can you explain us, what we’re doing wrong?

Thanks.

p.s.: Server log from startup till the first client.

./startup.sh 
/usr/local/WowzaMediaServer/lib/
Configure logging: file:///usr/local/WowzaMediaServer/conf/log4j.properties
INFO server server-start Wowza Media Server 3 Trial Edition (Expires: Mar 13, 2012) 3.0.4 build1127 -
INFO server comment - Server License Key: SVRT3-XXXXX-XXXXX-XXXXX-XXXXX-zZnkm
INFO server comment - Maximum Connections: Unlimited
INFO server comment - Transcoder Streams Available: Unlimited
INFO server comment - Transcoder Watermark: Yes
INFO server comment - nDVR Available: Yes
INFO server comment - DRM Available: Yes
INFO server comment - Hardware Available Processors: 24
INFO server comment - Hardware Physical Memory: 484MB/24157MB
INFO server comment - Hardware Swap Space: 1MB/7627MB
INFO server comment - Max File Descriptor Count: 20000
INFO server comment - Open File Descriptor Count: 43
INFO server comment - OS Name: Linux
INFO server comment - OS Version: 2.6.32-5-amd64
INFO server comment - OS Architecture: amd64
INFO server comment - Java Name: Java HotSpot(TM) 64-Bit Server VM
INFO server comment - Java Vendor: Sun Microsystems Inc.
INFO server comment - Java Version: 1.6.0_26
INFO server comment - Java VM Version: 20.1-b02
INFO server comment - Java Spec Version: 1.6
INFO server comment - Java Home: /usr/lib/jvm/java-6-sun-1.6.0.26/jre
INFO server comment - Java Max Heap Size: 1066MB
INFO server comment - Java Architecture: 64
INFO server comment - Java Locale[user.language]: en
INFO server comment - Java Locale[user.country]: US
INFO server comment - Java Locale[file.encoding]: UTF-8
INFO server comment - Java Args[0]: -Xmx1200M
INFO server comment - Java Args[1]: -Djava.net.preferIPv4Stack=true
INFO server comment - Java Args[2]: -Dcom.sun.management.jmxremote=true
INFO server comment - Java Args[3]: -Dcom.wowza.wms.runmode=standalone
INFO server comment - Java Args[4]: -Dcom.wowza.wms.native.base=linux
INFO server comment - Java Args[5]: -Dcom.wowza.wms.AppHome=/usr/local/WowzaMediaServer
INFO server comment - Java Args[6]: -Dcom.wowza.wms.ConfigURL=
INFO server comment - Java Args[7]: -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaMediaServer
INFO server comment - Server runmode: standalone
INFO server comment - Server native.platform: linux
INFO server comment - Server threads[h/t]: 10/10
INFO server comment - CMDInterface now listening: [any]:8083
INFO vhost vhost-start _defaultVHost_ -
INFO server comment - _defaultVHost_ threads[h/t]:120/80 home:/usr/local/WowzaMediaServer
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:1)
INFO vhost comment _defaultVHost_ Bind successful ([any]:8086)
INFO server comment - Wowza Media Server is started!
INFO application app-start _definst_ live/_definst_
INFO server comment - RTPMediaCaster.create[2122285154]
INFO server comment - RTPMediaCaster.init[2122285154]
INFO server comment - RTPMediaCaster.Reconnector[2122285154:live/_definst_:kommersant.stream]: start: 1
INFO server comment - HTTPStreamManager.onHTTPRequest: Publish stream successfully started [live/_definst_]: flv:kommersant.stream
INFO server comment - RTPSessionDescriptionDataProviderBasic.getStreamInfo[live/_definst_]: URI: udp://0.0.0.0:10000
INFO stream create - -
INFO server comment - RTPUDPTransport.bind[live/_definst_]: /0.0.0.0:10000
INFO stream publish kommersant.stream -
INFO server comment - RTPMediaCaster.Reconnector[2122285154:live/_definst_:kommersant.stream]: done: 1
INFO server comment - UDPTransport.firstPacket: bind:/0.0.0.0:10000 msg:/127.0.0.1:45872
INFO server comment - RTPDePacketizerMPEGTS.handleRTPPacket: IMPORT: programID[prg:0x1,filter:none]
INFO server comment - RTPDePacketizerMPEGTS.handleRTPPacket: IMPORT: videoPID[prg:0x1,pid:0x100,filter:none]: streamType:H264:27
INFO server comment - RTPDePacketizerMPEGTS.handleRTPPacket: IMPORT: audioPID[prg:0x1,pid:0x101,filter:none]: streamType:AAC:15 audioLanguage:uknown
INFO server comment - TranscoderSessionNative.loadLibrary: Load transcoder list: /usr/local/WowzaMediaServer/lib-native/linux64/transcoder.list
INFO server comment - LiveStreamTranscoder.init[live/_definst_/kommersant.stream]: Load transcoder template: file:///usr/local/WowzaMediaServer/transcoder/templates/transcode.xml
INFO server comment - JNI:TranscoderSession.isCUDAAvailable[_defaultVHost_:live/_definst_/kommersant.stream]: NVidia CUDA hardware acceleration is NOT available on Linux
INFO server comment - JNI:TranscoderSession.isQuickSyncAvailable[_defaultVHost_:live/_definst_/kommersant.stream]: Intel Quick Sync hardware acceleration is NOT available on Linux
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream]: chunkDurationTolerance: 500
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream]: playlistChunkCount:4
INFO stream create - -
INFO stream publish kommersant.stream_360p -
INFO stream create - -
INFO stream publish kommersant.stream_160p -
INFO server comment - JNI:TranscoderSession.audioDecoderCreate[_defaultVHost_:live/_definst_/kommersant.stream]: Create audio decoder: AAC: default
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: sanjosestreamingpacketizer:kommersant.stream
INFO transcoder decoder-audio-start kommersant.stream {codec:AAC, objectType:LC, sampleRate:48000, channels:2}
INFO server comment - JNI:TranscoderSession.videoDecoderCreate[_defaultVHost_:live/_definst_/kommersant.stream]: Create video decoder: H.264: default
INFO server comment - JNI:TranscoderSession.audioEncoderAdd[_defaultVHost_:live/_definst_/kommersant.stream:360p]: Create audio encoder: AAC: default
INFO server comment - JNI:TranscoderSession.audioEncoderAdd[_defaultVHost_:live/_definst_/kommersant.stream:160p]: Create audio encoder: AAC: default
INFO server comment - JNI:AudioEncoderAAC.initialize[_defaultVHost_:live/_definst_/kommersant.stream:360p]: channels:2 sampleRate:48000 bitRate:96000
INFO server comment - SanJosePacketHandler.startStream[live/_definst_/kommersant.stream]
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream]: Video codec: H264
INFO server comment - JNI:AudioEncoderAAC.initialize[_defaultVHost_:live/_definst_/kommersant.stream:160p]: channels:2 sampleRate:48000 bitRate:96000
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream]: Audio codec: AAC
INFO transcoder encoder-audio-start kommersant.stream {name:"160p", bitrate:96000, codec:AAC, objectType:LC, sampleRate:48000, channels:2}
INFO transcoder encoder-audio-start kommersant.stream {name:"360p", bitrate:96000, codec:AAC, objectType:LC, sampleRate:48000, channels:2}
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream]: chunkDurationTarget: 10000
INFO transcoder decoder-video-start kommersant.stream {codec:H264, profile:High, level:3.1, frameSize:960x540, displaySize:960x540, frameRate:25.0}
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream]: chunkDurationTolerance: 500
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream]: audioGroupCount: 3
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream]: playlistChunkCount:3
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: cupertinostreamingpacketizer:kommersant.stream
INFO server comment - CupertinoPacketHandler.startStream[live/_definst_/kommersant.stream]
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream]: Video codec:H264 isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream]: Audio codec:AAC isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - JNI:VideoDecoderH264.updateDecodeInfo[global]: aspect:16x9 frame:960x540 display:960x540 frameRate:25
INFO server comment - JNI:TranscoderSession.videoEncoderAdd[_defaultVHost_:live/_definst_/kommersant.stream:360p]: Create video encoder: H.264: default
WARN server comment - JNI:VideoEncoderH264::setDefaults: CPUID vendor:GenuineIntel isMMX:1 isSSE:1 isSSE2:1 isSSE3:1 cpu_opt:6
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_160p]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_360p]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_160p]: chunkDurationTolerance: 500
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_360p]: chunkDurationTolerance: 500
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_160p]: playlistChunkCount:4
INFO server comment - LiveStreamPacketizerSanJose.init[live/_definst_/kommersant.stream_360p]: playlistChunkCount:4
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: sanjosestreamingpacketizer:kommersant.stream_160p
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: sanjosestreamingpacketizer:kommersant.stream_360p
INFO server comment - SanJosePacketHandler.startStream[live/_definst_/kommersant.stream_160p]
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_160p]: chunkDurationTarget: 10000
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream_160p]: Audio codec: AAC
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_360p]: chunkDurationTarget: 10000
INFO server comment - SanJosePacketHandler.startStream[live/_definst_/kommersant.stream_360p]
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_360p]: chunkDurationTolerance: 500
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_160p]: chunkDurationTolerance: 500
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: smoothstreamingpacketizer:kommersant.stream
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_160p]: audioGroupCount: 3
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_360p]: audioGroupCount: 3
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream_360p]: Audio codec: AAC
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_360p]: playlistChunkCount:3
INFO server comment - LiveStreamPacketizerCupertino.init[live/_definst_/kommersant.stream_160p]: playlistChunkCount:3
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: cupertinostreamingpacketizer:kommersant.stream_360p
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: cupertinostreamingpacketizer:kommersant.stream_160p
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: smoothstreamingpacketizer:kommersant.stream_360p
INFO server comment - CupertinoPacketHandler.startStream[live/_definst_/kommersant.stream_360p]
INFO server comment - JNI:TranscoderSession.videoEncoderAdd[_defaultVHost_:live/_definst_/kommersant.stream:160p]: Create video encoder: H.264: default
INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_definst_/kommersant.stream]
INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_definst_/kommersant.stream_360p]
INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream packetizer: smoothstreamingpacketizer:kommersant.stream_160p
INFO server comment - CupertinoPacketHandler.startStream[live/_definst_/kommersant.stream_160p]
INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_definst_/kommersant.stream_160p]
WARN server comment - JNI:VideoEncoderH264::setDefaults: CPUID vendor:GenuineIntel isMMX:1 isSSE:1 isSSE2:1 isSSE3:1 cpu_opt:6
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_360p]: Audio codec:AAC isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_160p]: Audio codec:AAC isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_360p][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_160p][mp4a.40.2]: AAC Audio info: {AACFrame: codec:AAC, channels:2, frequency:48000, samplesPerFrame:1024, objectType:LC}
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream][avc1.100.31]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Baseline/Level 3.0 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:High, level:3.1, frameSize:960x540, displaySize:960x540, frameRate:25.0, crop: l:0 r:0 t:0 b:2}
INFO transcoder encoder-video-start kommersant.stream {name:"160p", bitrate:200000, codec:H264, profile:Baseline, level:1.2, frameSize:284x160, displaySize:284x160, frameRate:25.0}
INFO server comment - TranscoderStreamNameGroup.addInternal[_defaultVHost_:live/_definst_/kommersant.stream]: Add name group: kommersant.stream_mobile
INFO transcoder encoder-video-start kommersant.stream {name:"360p", bitrate:850000, codec:H264, profile:Main, level:3.0, frameSize:640x360, displaySize:640x360, frameRate:25.0}
INFO server comment - TranscoderStreamNameGroup.addInternal[_defaultVHost_:live/_definst_/kommersant.stream]: Add name group: kommersant.stream_all
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream_360p]: Video codec: H264
INFO server comment - LiveStreamPacketizerSanJose.handlePacket[live/_definst_/kommersant.stream_160p]: Video codec: H264
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_360p]: Video codec:H264 isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_160p]: Video codec:H264 isCompatible:true
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_360p][avc1.77.30]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Baseline/Level 3.0 or lower is required) Video info: {H264CodecConfigInfo: codec:H264, profile:Main, level:3.0, frameSize:640x360, displaySize:640x360, frameRate:25.0, PAR:1:1, crop: l:0 r:0 t:0 b:4}
INFO server comment - LiveStreamPacketizerCupertino.handlePacket[live/_definst_/kommersant.stream_160p][avc1.66.12]: H.264 Video info: {H264CodecConfigInfo: codec:H264, profile:Baseline, level:1.2, frameSize:284x160, displaySize:284x160, frameRate:25.0, PAR:1:1, crop: l:0 r:2 t:0 b:0}
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingAudio: Bitrate[live/_definst_/kommersant.stream_160p]: 205
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingAudio: Bitrate[live/_definst_/kommersant.stream_360p]: 205
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:0 count:1 duration:1831043
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:0 count:1 duration:1831043
INFO cupertino connect 1489447255 -
INFO stream create kommersant.stream_all -
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingAudio: Bitrate[live/_definst_/kommersant.stream]: 108227
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:0 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:1 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:1 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:1 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.handlePacket[live/_definst_/kommersant.stream_160p]: Fragment durations: [2.4,2.4,2.4]
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingVideo: Bitrate[live/_definst_/kommersant.stream_160p]: 186047
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:0 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.handlePacket[live/_definst_/kommersant.stream_360p]: Fragment durations: [2.4,2.4,2.4]
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingVideo: Bitrate[live/_definst_/kommersant.stream_360p]: 816576
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:0 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:2 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:2 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:2 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:1 a/v/k:479/251/2 duration:10197
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:1 a/v/k:159/250/2 duration:10197
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:1 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:1 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:1 a/v/k:462/241/4 duration:1840840
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:1 a/v/k:153/240/4 duration:1840840
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:1 a/v/k:153/240/4 duration:9797
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:1 a/v/k:462/241/4 duration:1840840
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:3 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:3 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:3 count:94 duration:2005
INFO cupertino connect 29602303 -
INFO stream create kommersant.stream_all -
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:4 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:4 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:2 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:2 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:4 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:5 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:5 count:94 duration:2005
WARN server comment - LiveStreamPacketizerSmoothStreaming.handlePacket[live/_definst_/kommersant.stream]: Fragment duration greater than suggested range of 1-4 seconds. Adjust keyframe interval accordingly: Fragment durations: [5.0,5.0,5.0]
INFO server comment - LiveStreamPacketizerSmoothStreaming.flushPendingVideo: Bitrate[live/_definst_/kommersant.stream]: 367778
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:0 count:125 duration:5000
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:3 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:3 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:5 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:6 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:6 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:4 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:4 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:6 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:7 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:7 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:7 count:94 duration:2005
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:2 a/v/k:157/250/2 duration:10000
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:2 a/v/k:471/251/2 duration:10000
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:1 count:125 duration:5000
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:2 a/v/k:453/241/4 duration:9600
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:2 a/v/k:151/240/4 duration:9600
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:2 a/v/k:150/240/4 duration:9600
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:2 a/v/k:451/241/4 duration:9600
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:5 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:5 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:8 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:8 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:8 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:6 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:6 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:9 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:9 count:94 duration:2006
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:9 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:audio id:10 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:audio id:10 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:7 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:7 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:2 count:125 duration:5000
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:3 count:125 duration:5000
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:audio id:10 count:94 duration:2005
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:8 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:8 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:3 a/v/k:451/241/4 duration:9600
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:3 a/v/k:453/241/4 duration:9600
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:3 a/v/k:151/240/4 duration:9600
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream_360p]: Add chunk: id:3 a/v/k:150/240/4 duration:9600
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:9 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:9 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:4 count:125 duration:5000
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:3 a/v/k:506/271/3 duration:10800
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:3 a/v/k:168/270/3 duration:10800
INFO stream destroy kommersant.stream_all -
INFO cupertino disconnect 1489447255 -
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_160p]: Add chunk: type:video id:10 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream_360p]: Add chunk: type:video id:10 count:60 duration:2400
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:5 count:20 duration:800
INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[live/_definst_/kommersant.stream]: Add chunk: type:video id:6 count:125 duration:5000
INFO server comment - LiveStreamPacketizerCupertino.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:4 a/v/k:156/250/2 duration:10000
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream]: Add chunk: id:4 a/v/k:470/251/2 duration:10000
INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[live/_definst_/kommersant.stream_160p]: Add chunk: id:4 a/v/k:562/301/5 duration:12000

I think the problem is when you “… access another playlist with the same session ID”. That won’t work.

Richard

I’ve found the direct way to reproduce the problem.

  1. form multibitrate smil file

  2. request manifest.m3u8 on it (just to have urls to items manifests)

  3. let the session shutdown on timeout (30 sec) or just modify “wowzasessionid” param of items

  4. request manifest.m3u8 of some playlist item or even some chunk (media_X.ts)

  5. request manifest.m3u8 of another playlist item and observe 403 in response

Sounds strange?

Imagine iPad user pausing video in the middle, then returning to watching it, then his iPad determines that it’s time to switch to another bitrate…

I hope you understand that it’s generally not my job to find bugs and easy ways to reproduce them.

So I hope very much that you will fix the problem soon , since it is already observed and reproduced by me.

Thank you for understanding…

This is a known problem. We do not have a fix at this time. If a multi-bitrate session times out then it re-instated you are onlky able to access the bitrate of the last request before the timeout.

Charlie

It most likely will not be anytime in teh near future.

Charlie

This problem has been addressed in this patch:

WowzaMediaServer3.0.5-patch6.zip

Charlie

To allow the client to switch bitrates, you arrange two or more streams in a .smil file. Wowza will manage the sessionId for each. This is covered in each of the tutorials:

https://www.wowza.com/docs/tutorials

Richard

In step 3 in your last post, you modify wowzasessionid. This is not supported. So not working is not a bug, it is expected.

Richard

Alex,

Are you using m3u8 files produced outside of Wowza?

Application.xml files are only relevant in one location per application, and that is here:

[wowza-install-dir]/conf/[app-name]/Application.xml

If the above file does not exist for an application, or if it is malformed, then the default configuration file is used:

[wowza-install-dir]/conf/Application.xml

Review the Quickstart guide:

https://www.wowza.com/docs/quick-start-guides

Richard

Alex,

Great, thanks for update. Glad it’s working

Richard

I think the problem is when you “… access another playlist with the same session ID”. That won’t work.

Richard

I think Richard didn’t understood the problem.

The problem exists and it seems to be something like a Wowza bug.

I suppose the problem is in Session name set to first playlist item (resolved in VOD case to particular path of file) when the second playlist item request arrives, so internally it forms possibly incorrect “DomainStr” with “getStreamDomainStr”(HTTPStreamerSessionBase) which is in case doesn’t pass internal validation with “isValidStreamDomainStr”(IHTTPStreamerSession)

Unfortunately I do not have Wowza sources to verify my predictions :slight_smile:

In my case I work with “.amlst” - dynamic playlists and the problem is sometimes observed …

However I observed it rarely with common smil files, when I tried to download all bitrate cupertino playlists one after another with curl.

I tried now to do this and have done it without problems.

So it is not so easy to reproduce the problem, but it definitely exists.

So probably you’ll be able to reproduce it with the following steps:

  1. form smil file with multiple VOD entries

  2. request manifest.m3u8 on smil file

  3. request manifest.m3u8 on first playlist item

  4. request manifest.m3u8 on second playlist item

Under some conditions point (4) will return 403. However not always (currently not able to reproduce).

I hope that may help you fix the problem.

I hope that may help you fix the problem.

I’ve found the direct way to reproduce the problem.

  1. form multibitrate smil file

  2. request manifest.m3u8 on it (just to have urls to items manifests)

  3. let the session shutdown on timeout (30 sec) or just modify “wowzasessionid” param of items

  4. request manifest.m3u8 of some playlist item or even some chunk (media_X.ts)

  5. request manifest.m3u8 of another playlist item and observe 403 in response

Sounds strange?

Imagine iPad user pausing video in the middle, then returning to watching it, then his iPad determines that it’s time to switch to another bitrate…

I hope you understand that it’s generally not my job to find bugs and easy ways to reproduce them.

So I hope very much that you will fix the problem soon , since it is already observed and reproduced by me.

Thank you for understanding…

Thank you for reply, Charlie!

You see, the problem is actual enough for multibitrate iOS streaming.

Please post an update here (or somewhere else where it’s visible) when this will be fixed (with link to some patch, I guess).

Waiting…

I think the problem is when you “… access another playlist with the same session ID”. That won’t work.

Richard

Hello, Richard!

Thanks for your reply but can you explain a bit more in details?

Why won’t it work? It’s the standard behavior of mediastreamvalidator for example: it requests then parses all available playlists, then it starts to download files. It may even do it simultaneously.

And it’s normal for HLS clients to request for more playlists if they decide to switch bitrates.

This problem has been addressed in this patch:

WowzaMediaServer3.0.5-patch6.zip

Charlie

Hello Charlie,

We are still experiencing this issue with certain clients with the 3.1.1.

Unfortunately, when doing some tests the the new VLC player, it is not intermittent, but constantly doing a 403…

What we have discovered is that:

  • If the m3u8 file contains only 1 layer, everything goes fine

  • If the m3u8 file contains more than one layer, the first layer loads fine but the second sends 403 to the client and the log message says :

2012-05-09 14:18:19 CEST comment server WARN 200 - HTTPStreamerAdapterCupertinoStreamer.onPlaylist[ondemand/definst/mp4:File_2.mp4/playlist.m3u8?wowzasessionid=828363402&AccountUID=0f52f1db-4499-4915-9e7d-b16fa6c99f7d&MovieItemUID=e0b26002-8268-4600-a246-169454a1eedb&authToken=adf725ea920749b56b6d699799a843b012c3eeaa0feca051fa1574090342c5f8&DeviceSerialNumber=EXCA3KZXY7MW6&DeviceType=1]: Not valid stream name [828363402]

The only thing I can say is that the configuration we have has been migrated from Wowza 2.0. Is there something to change in there? By the way, with Wowza 2.0 we remarked that we had to copy the Application.xml in several folders for Wowza to work. For example, we have WOWZA_DIR/applications/ondemand/Application.xml and WOWZA_DIR/conf/applications/ondemand/Application.xml. Both are exact copies, but make the change management quite complex… Can we remove one of those config files with Wowza 3.0 ? If so, in which directory?

Thanks in advance for your help.

Regards,

Alex

Alex,

Are you using m3u8 files produced outside of Wowza?

Application.xml files are only relevant in one location per application, and that is here:

[wowza-install-dir]/conf/[app-name]/Application.xml

If the above file does not exist for an application, or if it is malformed, then the default configuration file is used:

[wowza-install-dir]/conf/Application.xml

Review the Quickstart guide:

https://www.wowza.com/docs/quick-start-guides

Richard

Hello Richard,

No we use m3u8 generated by SMIL files…

We have been investigating further and it seems that the problem is coming from a proprietary HLS player… iPad’s and VLC are now OK with 3.1.1, so I guess the problem is solved on your side :slight_smile:

Regards,

Alex