Wowza Community

Cmafstreamingpacketizer - dash stream is missing audio

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>