Hi,
I have configured a Wowza application to deliver HLS and DASH. My Applicaion.xml is below.
I have a start-up stream pointing to this application. I can playout HLS and LL-HLS, the audio works fine, however dash manifest only includes video rendition, audio is missing.
Below are the playlists my application generates.
I do not see any error messages in the logs.
Do you have any suggestions as what I need to change to enable audio playback for DASH or what steps I could take to troubleshoot further?
Many thanks,
Veronica
GET http :// localhost:1935/basic3/basic3-119x1.stream/playlist.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,NAME=“basic3-119x1.stream”,DEFAULT=YES,GROUP-ID=“audioGroup”,URI=“chunklist_ao.m3u8”
#EXT-X-STREAM-INF:BANDWIDTH=322905,CODECS=“avc1.4d0029,mp4a.40.2”,RESOLUTION=640x360,AUDIO=“audioGroup”
chunklist_vo.m3u8
GET http :// localhost:1935/basic3/basic3-119x1.stream/playlist_sfm4s.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,NAME=“basic3-119x1.stream”,DEFAULT=YES,GROUP-ID=“audioGroup”,URI=“chunklist_ao_sfm4s.m3u8”
#EXT-X-STREAM-INF:BANDWIDTH=303789,CODECS=“avc1.4d0029,mp4a.40.2”,RESOLUTION=640x360,AUDIO=“audioGroup”
chunklist_vo_sfm4s.m3u8
GET http : // localhost:1935/basic3/basic3-119x1.stream/manifest.mpd
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:scte35="https://schemas.scte.org/35/scte_35_20211104.xsd"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011,urn:mpeg:cmaf:presentation_profile:cmfhd:2017"
type="dynamic"
minimumUpdatePeriod="PT1.82S"
publishTime="2024-01-26T15:39:26.237Z"
availabilityStartTime="2024-01-22T17:10:53.529Z"
timeShiftBufferDepth="PT6.0S"
suggestedPresentationDelay="PT2.0S"
minBufferTime="PT6.0S">
<ProgramInformation>
<Title>basic3-119x1.stream</Title>
</ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" group="1" mimeType="video/mp4" width="640" height="360" par="16:9" frameRate="25" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<SegmentTemplate timescale="90000" media="segment_un3kf01jl_ctvideo_cfcmfv_rid$RepresentationID$_cs$Time$_mpd.cmfv" initialization="segment_un3kf01jl_ctvideo_cfcmfv_rid$RepresentationID$_cinit_mpd.cmfv">
<SegmentTimeline>
<S t="30609720000" d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="p0va0br232672" codecs="avc1.4d0029" sar="1:1" bandwidth="232672" />
</AdaptationSet>
</Period>
<UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2024-01-26T15:39:26.237Z"/>
</MPD>
GET http :// localhost:1935/basic3/basic3-119x1.stream/manifest_sfm4s.mpd
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:scte35="https://schemas.scte.org/35/scte_35_20211104.xsd"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011,urn:mpeg:cmaf:presentation_profile:cmfhd:2017"
type="dynamic"
minimumUpdatePeriod="PT1.791S"
publishTime="2024-01-26T15:37:41.266Z"
availabilityStartTime="2024-01-22T17:10:53.529Z"
timeShiftBufferDepth="PT6.0S"
suggestedPresentationDelay="PT2.0S"
minBufferTime="PT6.0S">
<ProgramInformation>
<Title>basic3-119x1.stream</Title>
</ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" group="1" mimeType="video/mp4" width="640" height="360" par="16:9" frameRate="25" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<SegmentTemplate timescale="90000" media="segment_un3kf01jl_ctvideo_cfcmfv_rid$RepresentationID$_cs$Time$_mpd.cmfv" initialization="segment_un3kf01jl_ctvideo_cfcmfv_rid$RepresentationID$_cinit_mpd.cmfv">
<SegmentTimeline>
<S t="30600270000" d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
<S d="90000"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="p0va0br232672" codecs="avc1.4d0029" sar="1:1" bandwidth="232672" />
</AdaptationSet>
</Period>
<UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2024-01-26T15:37:41.266Z"/>
</MPD>
My Application.xml is here:
<?xml version="1.0" encoding="UTF-8"?>
<Root version="1">
<Application>
<Name>basic3</Name>
<AppType>LiveHTTPOrigin</AppType>
<Description></Description>
<!-- Uncomment to set application level timeout values
<ApplicationTimeout>60000</ApplicationTimeout>
<PingTimeout>12000</PingTimeout>
<ValidationFrequency>8000</ValidationFrequency>
<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
<MaximumSetBufferTime>60000</MaximumSetBufferTime>
<MaximumStorageDirDepth>25</MaximumStorageDirDepth>
-->
<Connections>
<AutoAccept>true</AutoAccept>
<AllowDomains></AllowDomains>
</Connections>
<!--
StorageDir path variables
${com.wowza.wms.AppHome} - Application home directory
${com.wowza.wms.ConfigHome} - Configuration home directory
${com.wowza.wms.context.VHost} - Virtual host name
${com.wowza.wms.context.VHostConfigHome} - Virtual host home directory
${com.wowza.wms.context.Application} - Application name
${com.wowza.wms.context.ApplicationInstance} - Application instance name
-->
<Streams>
<StreamType>live-lowlatency</StreamType>
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, mpegdashstreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, mpegdashstreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
<LiveStreamPacketizers>cmafstreamingpacketizer, cupertinostreamingpacketizer</LiveStreamPacketizers>
<!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
<Properties>
<Property>
<Name>flushInterval</Name>
<Value>25</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>onFlushNotifyClients</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
</Properties>
</Streams>
<Transcoder>
<!-- To turn on transcoder set to: transcoder -->
<LiveStreamTranscoder></LiveStreamTranscoder>
<!-- [templatename].xml or ${SourceStreamName}.xml -->
<Templates>${SourceStreamName}.xml,transrate.xml</Templates>
<ProfileDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles</ProfileDir>
<TemplateDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/templates</TemplateDir>
<Properties>
</Properties>
</Transcoder>
<DVR>
<!-- As a single server or as an origin, use dvrstreamingpacketizer in LiveStreamPacketizers above -->
<!-- Or, in an origin-edge configuration, edges use dvrstreamingrepeater in LiveStreamPacketizers above -->
<!-- As an origin, also add dvrchunkstreaming to HTTPStreamers below -->
<!-- If this is a dvrstreamingrepeater, define Application/Repeater/OriginURL to point back to the origin -->
<!-- To turn on DVR recording set Recorders to dvrrecorder. This works with dvrstreamingpacketizer -->
<Recorders></Recorders>
<!-- As a single server or as an origin, set the Store to dvrfilestorage-->
<!-- edges should have this empty -->
<Store></Store>
<!-- Window Duration is length of live DVR window in seconds. 0 means the window is never trimmed. -->
<WindowDuration>0</WindowDuration>
<!-- Storage Directory is top level location where dvr is stored. e.g. c:/temp/dvr -->
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/dvr</StorageDir>
<!-- valid ArchiveStrategy values are append, version, delete -->
<ArchiveStrategy>append</ArchiveStrategy>
<!-- Properties for DVR -->
<Properties>
</Properties>
</DVR>
<TimedText>
<!-- VOD caption providers (separate with commas): vodcaptionprovidermp4_3gpp, vodcaptionproviderttml, vodcaptionproviderwebvtt, vodcaptionprovidersrt, vodcaptionproviderscc -->
<VODTimedTextProviders></VODTimedTextProviders>
<!-- Properties for TimedText -->
<Properties>
</Properties>
</TimedText>
<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, mpegdashstreaming, dvrchunkstreaming -->
<HTTPStreamers>cupertinostreaming</HTTPStreamers>
<MediaCache>
<MediaCacheSourceList></MediaCacheSourceList>
</MediaCache>
<SharedObjects>
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/applications/${com.wowza.wms.context.Application}/sharedobjects/${com.wowza.wms.context.ApplicationInstance}</StorageDir>
</SharedObjects>
<Client>
<IdleFrequency>-1</IdleFrequency>
<Access>
<StreamReadAccess></StreamReadAccess>
<StreamWriteAccess>*</StreamWriteAccess>
<StreamAudioSampleAccess></StreamAudioSampleAccess>
<StreamVideoSampleAccess></StreamVideoSampleAccess>
<SharedObjectReadAccess>*</SharedObjectReadAccess>
<SharedObjectWriteAccess>*</SharedObjectWriteAccess>
</Access>
</Client>
<RTP>
<!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
<Authentication>
<PublishMethod>digest</PublishMethod>
<PlayMethod>block</PlayMethod>
</Authentication>
<!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
<AVSyncMethod>senderreport</AVSyncMethod>
<MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
<IdleFrequency>75</IdleFrequency>
<RTSPSessionTimeout>90000</RTSPSessionTimeout>
<RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
<RTSPBindIpAddress></RTSPBindIpAddress>
<RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
<RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
<IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
<!-- Properties defined here will override any properties defined in conf/RTP.xml for any depacketizers loaded by this application -->
<Properties>
</Properties>
</RTP>
<WebRTC>
<!-- Enable WebRTC publishing to this application -->
<EnablePublish>false</EnablePublish>
<!-- Enable WebRTC playback from this application -->
<EnablePlay>false</EnablePlay>
<!-- Enable query of published stream names for this application -->
<EnableQuery>false</EnableQuery>
<!-- IP address, transport, and port used for WebRTC streaming. -->
<!--TCP format: [wowza-streaming-engine-external-ip-address],tcp,[port] -->
<!--UDP format: [wowza-streaming-engine-external-ip-address],udp -->
<IceCandidateIpAddresses>127.0.0.1,tcp,1935</IceCandidateIpAddresses>
<!-- Local IP address of the network card you want to use for WebRTC UDP traffic -->
<UDPBindAddress></UDPBindAddress>
<!-- Comma-deliniated list of audio codecs, in order of preference, for stream ingestion -->
<PreferredCodecsAudio>opus,pcmu,pcma</PreferredCodecsAudio>
<!-- Comma-deliniated list of video codecs, in order of preference, for stream ingestion -->
<PreferredCodecsVideo>vp8,h264</PreferredCodecsVideo>
<!-- Enable WebRTC debug logging -->
<DebugLog>false</DebugLog>
<!-- Properties for WebRTC -->
<Properties>
</Properties>
</WebRTC>
<MediaCaster>
<RTP>
<RTSP>
<!-- udp, interleave -->
<RTPTransportMode>interleave</RTPTransportMode>
</RTSP>
</RTP>
<StreamValidator>
<Enable>true</Enable>
<ResetNameGroups>true</ResetNameGroups>
<StreamStartTimeout>20000</StreamStartTimeout>
<StreamTimeout>12000</StreamTimeout>
<VideoStartTimeout>0</VideoStartTimeout>
<VideoTimeout>0</VideoTimeout>
<AudioStartTimeout>0</AudioStartTimeout>
<AudioTimeout>0</AudioTimeout>
<VideoTCToleranceEnable>false</VideoTCToleranceEnable>
<VideoTCPosTolerance>3000</VideoTCPosTolerance>
<VideoTCNegTolerance>-500</VideoTCNegTolerance>
<AudioTCToleranceEnable>false</AudioTCToleranceEnable>
<AudioTCPosTolerance>3000</AudioTCPosTolerance>
<AudioTCNegTolerance>-500</AudioTCNegTolerance>
<DataTCToleranceEnable>false</DataTCToleranceEnable>
<DataTCPosTolerance>3000</DataTCPosTolerance>
<DataTCNegTolerance>-500</DataTCNegTolerance>
<AVSyncToleranceEnable>false</AVSyncToleranceEnable>
<AVSyncTolerance>1500</AVSyncTolerance>
<DebugLog>true</DebugLog>
</StreamValidator>
<!-- Properties defined here will override any properties defined in conf/MediaCasters.xml for any MediaCasters loaded by this applications -->
<Properties>
</Properties>
</MediaCaster>
<MediaReader>
<!-- Properties defined here will override any properties defined in conf/MediaReaders.xml for any MediaReaders loaded by this applications -->
<Properties>
</Properties>
</MediaReader>
<MediaWriter>
<!-- Properties defined here will override any properties defined in conf/MediaWriter.xml for any MediaWriter loaded by this applications -->
<Properties>
</Properties>
</MediaWriter>
<LiveStreamPacketizer>
<!-- Properties defined here will override any properties defined in conf/LiveStreamPacketizers.xml for any LiveStreamPacketizers loaded by this applications -->
<Properties>
<Property>
<Name>cmafLLEnableLowLatency</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
<Property>
<Name>httpRandomizeMediaName</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
<Property>
<Name>cmafLLChunkDurationTargetAudio</Name>
<Value>200</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cmafLLChunkDurationTargetVideo</Name>
<Value>200</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cmafSegmentDurationTarget</Name>
<Value>1000</Value>
<Type>Integer</Type>
</Property>
<!--
<Property>
<Name>cmafLLChunkingScheme</Name>
<Value>byDuration</Value>
<Type>String</Type>
</Property>
-->
<Property>
<Name>cmafMaxSegmentCount</Name>
<Value>10</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cmafPlaylistSegmentCount</Name>
<Value>6</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cupertinoChunkDurationTarget</Name>
<Value>1000</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cupertinoMaxChunkCount</Name>
<Value>20</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>cupertinoPlaylistChunkCount</Name>
<Value>5</Value>
<Type>Integer</Type>
</Property>
</Properties>
</LiveStreamPacketizer>
<HTTPStreamer>
<!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
<Properties>
<Property>
<Name>httpOriginMode</Name>
<Value>on</Value>
<Type>String</Type>
</Property>
<Property>
<Name>cupertinoCacheControlPlaylist</Name>
<Value>max-age=1</Value>
<Type>String</Type>
</Property>
<Property>
<Name>cupertinoCacheControlMediaChunk</Name>
<Value>max-age=3600</Value>
<Type>String</Type>
</Property>
<Property>
<Name>smoothCacheControlPlaylist</Name>
<Value>max-age=1</Value>
<Type>String</Type>
</Property>
<Property>
<Name>smoothCacheControlMediaChunk</Name>
<Value>max-age=3600</Value>
<Type>String</Type>
</Property>
<Property>
<Name>smoothCacheControlDataChunk</Name>
<Value>max-age=3600</Value>
<Type>String</Type>
</Property>
<Property>
<Name>smoothStreamingEncryptionRandomIV</Name>
<Value>false</Value>
<Type>Boolean</Type>
</Property>
<Property>
<Name>mpegdashCacheControlPlaylist</Name>
<Value>max-age=1</Value>
<Type>String</Type>
</Property>
<Property>
<Name>mpegdashCacheControlMediaChunk</Name>
<Value>max-age=3600</Value>
<Type>String</Type>
</Property>
<!--
<Property>
<Name>cupertinoPartHoldBack</Name>
<Value>0.6</Value>
<Type>Double</Type>
</Property>
<Property>
<Name>cupertinoEnableProgramDateTime</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
<Property>
<Name>cupertinoSegmentHoldBack</Name>
<Value>6.0</Value>
<Type>Double</Type>
</Property>
-->
<Property>
<Name>cupertinoFloatingPointDurations</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
</Properties>
</HTTPStreamer>
<Manager>
<!-- Properties defined are used by the Manager -->
<Properties>
</Properties>
</Manager>
<Repeater>
<OriginURL></OriginURL>
<QueryString></QueryString>
</Repeater>
<StreamRecorder>
<Properties>
</Properties>
</StreamRecorder>
<Modules>
<Module>
<Name>base</Name>
<Description>Base</Description>
<Class>com.wowza.wms.module.ModuleCore</Class>
</Module>
<Module>
<Name>logging</Name>
<Description>Client Logging</Description>
<Class>com.wowza.wms.module.ModuleClientLogging</Class>
</Module>
<Module>
<Name>flvplayback</Name>
<Description>FLVPlayback</Description>
<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
</Module>
<Module>
<Name>ModuleCoreSecurity</Name>
<Description>Core Security Module for Applications</Description>
<Class>com.wowza.wms.security.ModuleCoreSecurity</Class>
</Module>
</Modules>
<!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
<Properties>
</Properties>
</Application>
</Root>