Results 1 to 4 of 4

Thread: Generating audio-only stream with HLS adaptive bitstream

  1. #1
    Join Date
    Jun 2010
    Posts
    13

    Default Generating audio-only stream with HLS adaptive bitstream

    I'm running the latest version of Wowza (3.6.2) on Linux and I'm using the Transcoder Add-on to generate multiple renditions of a live stream. I'm trying to produce an audio-only stream but I don't seem to be able to get it to work.

    The live application configuration file has the stream type set to live and the transcoder turned on. The input stream has H.264 video and AAC audio.

    I added a <MediaListRendition> element to the stream name group (in transrate.xml):

    <StreamNameGroup>
    	<Name>all</Name>
    	<StreamName>${SourceStreamName}_all</StreamName>
    	<Members>
    		<Member>
    			<EncodeName>source</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>360p</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>160p</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>160p</EncodeName>
    			<MediaListRendition>
    				<WowzaAudioOnly>true</WowzaAudioOnly>
    			</MediaListRendition>
    		</Member>
    	</Members>
    </StreamNameGroup>
    When I published to the live application, I tried to retrieve the playlist and this is what I got:

    $ curl http://[wowza-ip-address]:1935/live/ngrp:myStream_all/playlist.m3u8
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=726994,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=480x210
    chunklist_w947278958_b726994.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=977238,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=822x360
    chunklist_w947278958_b977238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=327238,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=366x160
    chunklist_w947278958_b327238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=127238,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=366x160
    chunklist_w947278958_b127238_ao.m3u8
    The CODECS attribute of the last element, which I assume is the audio-only stream, contains the video codec information for some reason. The BANDWIDTH seems to be incorrect too. My understanding is that the audio-only stream should be 64K. I then retrieved the audio-only playlist and got this:

    $ curl http://[wowza-ip-address]:1935/live/ngrp:myStream_all/chunklist_w947278958_b127238_ao.m3u8
    
    #EXTM3U
    #EXT-X-ENDLIST
    It's always empty. The other streams in the playlist play fine. I also tried adding my own encode block and referencing it in the stream name group but I got the same result:

    <Encode>
       <Enable>true</Enable>
       <Name>audio-only</Name>
       <StreamName>mp4:${SourceStreamName}_aac</StreamName>
       <Video>
            <!-- H.264, PassThru, Disable -->
            <Codec>Disable</Codec>
            <Bitrate>${SourceVideoBitrate}</Bitrate>
            <Parameters>
            </Parameters>
        </Video>
        <Audio>
             <!-- AAC, PassThru, Disable -->
             <Codec>AAC</Codec>
             <Bitrate>64000</Bitrate>
             <Parameters>
             </Parameters>
         </Audio>
         <Properties>
         </Properties
    </Encode>
    Any thoughts?

  2. #2
    Join Date
    Sep 2011
    Posts
    1,934

    Default

    Hi,
    If the audio codec is already AAC you can set the audio part of the encode block called audio-only to:
    <Codec>PassThru</Codec>

    Also you will need to add this Property, completing point 1 from the following guide to the Application.xml/LiveStreamPacketizer/Properties container.

    <Property>
        <Name>cupertinoCreateAudioOnlyRendition</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>
    The guide can be found here,
    http://www.wowza.com/forums/content....pliant-streams

    Please let me know how you get on with this and if your successful with publishing the audio only stream.

    Jason
    Last edited by JasonH; 07-25-2013 at 03:50 AM.

  3. #3
    Join Date
    Jun 2010
    Posts
    13

    Default

    Hi Jason,

    Thanks for your response. I am now able to create an audio-only stream, although I had to make a few tweaks. Here's what I did:

    I set LiveStreamPacketizer/Properties in Application.xml to this:

    <Property>
        <Name>cupertinoCreateAudioOnlyRendition</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>
    The first thing I did was to set the MediaRendition/WowzaAudioOnly to true on the 160p encode in the stream name group - so not using my custom encoder definition. Here's what I get when I retrieve the playlist:

    $ curl http://[wowza-ip-address]/live/ngrp:myStream_all/playlist.m3u8 
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=726994,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=480x210
    chunklist_w1752152784_b726994.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=977238,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=822x360
    chunklist_w1752152784_b977238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=327238,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=366x160
    chunklist_w1752152784_b327238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=127238,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=366x160
    chunklist_w1752152784_b127238_ao.m3u8
    Again, the BANDWIDTH figure for the audio-only playlist is not set to the correct value and the CODECS property still contains the video codec information. My understanding is that the client uses the CODECS property to figure out which of the streams is audio only, which I am not sure it would be able to if the video codec information is present as well. However, now when I retrieve the audio-only playlist, I get the AAC segments:

    $ curl http://[wowza-ip-address]/live/ngrp:myStream_all/chunklist_w1752152784_b127238_ao.m3u8
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-ALLOW-CACHE:NO
    #EXT-X-TARGETDURATION:12
    #EXT-X-MEDIA-SEQUENCE:3
    #EXTINF:10.88,
    media_w1752152784_b127238_ao_3.aac
    #EXTINF:8.36,
    media_w1752152784_b127238_ao_4.aac
    #EXTINF:9.76,
    media_w1752152784_b127238_ao_5.aac
    To solve the issue with the CODECS property, I modified my custom encoder to this:

    <Encode>
         <Enable>true</Enable>
         <Name>audio-only</Name>
         <StreamName>mp4:${SourceStreamName}_aac</StreamName>
         <Video>
               <!-- H.264, PassThru, Disable -->
               <Codec>Disable</Codec>
               <Bitrate>0</Bitrate>
               <Parameters>
               </Parameters>
         </Video>
         <Audio>
               <!-- AAC, PassThru, Disable -->
               <Codec>AAC</Codec>
               <Bitrate>48000</Bitrate>
               <Parameters>
               </Parameters>
          </Audio>
          <Properties>
          </Properties>
    </Encode>
    I had to set the video bitrate to zero otherwise the calculated bandwidth figure came out wrong. The input audio is 48K but when I set the audio codec to 'PassThru' and the bitrate to '${SourceAudioBitRate}' the bandwidth figure was 127238 for some reason. I then modified the stream name group to look like this:

    <StreamNameGroup>
    	<Name>all</Name>
    	<StreamName>${SourceStreamName}_all</StreamName>
    	<Members>
    		<Member>
    			<EncodeName>source</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>360p</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>160p</EncodeName>
    		</Member>
    		<Member>
    			<EncodeName>audio-only</EncodeName>
    		</Member>
    	</Members>
    </StreamNameGroup>
    Now, when I retrieve the playlist I get this:

    $ curl http://[wowza-ip-address]/live/ngrp:myStream_all/playlist.m3u8 
    
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=726994,CODECS="avc1.77.40,mp4a.40.2",RESOLUTION=480x210
    chunklist_w2002670409_b726994.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=977238,CODECS="avc1.77.31,mp4a.40.2",RESOLUTION=822x360
    chunklist_w2002670409_b977238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=327238,CODECS="avc1.66.21,mp4a.40.2",RESOLUTION=366x160
    chunklist_w2002670409_b327238.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=48000,CODECS="mp4a.40.2"
    chunklist_w2002670409_b48000.m3u8
    The CODECS property now only contains the audio codec information.

    Thanks

  4. #4
    Join Date
    Sep 2011
    Posts
    1,934

    Default

    Hi Simon,
    Thanks for the detailed update, this will help many of our other users that read this post.

    Jason

Similar Threads

  1. RTMP Adaptive with HLS Adaptive Fallback
    By Speegs in forum Media Players and Devices Discussion
    Replies: 5
    Last Post: 11-06-2013, 09:03 AM
  2. HLS stream discards audio and audio and video do not synchronize when serve 1280*720
    By guy1260 in forum Live Streaming and Encoder Discussion
    Replies: 5
    Last Post: 01-29-2013, 07:42 AM
  3. HLS Adaptive streaming for VOD?
    By eTiMaGo in forum Video On Demand Streaming Discussion
    Replies: 2
    Last Post: 11-27-2012, 03:51 PM
  4. VOD --- rtmp with hls adaptive fallback
    By bobmane in forum Video On Demand Streaming Discussion
    Replies: 12
    Last Post: 08-26-2012, 05:39 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •