Results 1 to 5 of 5

Thread: Icecast Restreaming and AAC Transcoding

  1. #1
    Join Date
    Jul 2010
    Posts
    5

    Question Icecast Restreaming and AAC Transcoding

    Hello,
    i am new the wowza and got simple Icecast MP3 Restreaming to work quite easily ;)
    I can listen to different icecast streams now via Flash Player, VLC (rtsp) and iOS.

    But i can't get the transcoding to work ;(

    My Application.xml based on the wowza tutorials and suggestions:
    <Root>
            <Application>
                    <!-- 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 config directory
                            ${com.wowza.wms.context.Application} - Application name
                            ${com.wowza.wms.context.ApplicationInstance} - Application instance name
    
                    -->
                    <Streams>
                            <StreamType>live</StreamType>
                            <StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
                            <KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
                            <!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater -->
                            <LiveStreamPacketizers>cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer</LiveStreamPacketizers>
                            <!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
                            <Properties>
                            </Properties>
                    </Streams>
                    <Transcoder>
                            <!-- To turn on transcoder set to: transcoder -->
                            <LiveStreamTranscoder>transcoder</LiveStreamTranscoder>
                            <!-- [templatename].xml or ${SourceStreamName}.xml -->
                            <!-- <Templates>${SourceStreamName}.xml,transrate.xml</Templates> -->
                            <!-- <Templates>${SourceStreamName}.xml,transcode.xml</Templates> -->
                            <Templates>audioonly.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 -->
    
                            <!-- 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>
    
                            <!-- If this is a dvrstreamingrepeater, define ChunkOriginURL to point back to origin -->
                            <!-- And define Application/Repeater/OriginURL to point back to the origin -->
                            <Repeater>
                                    <ChunkOriginURL></ChunkOriginURL>
                            </Repeater>
    
                            <!-- Properties for DVR -->
                            <Properties>
                            </Properties>
                    </DVR>
    
                    <!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, dvrchunkstreaming -->
                    <HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming</HTTPStreamers>
                    <SharedObjects>
                            <StorageDir></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>none</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>
                    <MediaCaster>
                            <RTP>
                                    <RTSP>
                                            <!-- udp, interleave -->
                                            <RTPTransportMode>interleave</RTPTransportMode>
                                    </RTSP>
                            </RTP>
                            <!-- Properties defined here will override any properties defined in conf/MediaCasters.xml for any MediaCasters loaded by this applications -->
                            <Properties>
                                    <Name>shoutcastMP3GroupCount</Name>
                                    <Value>1</Value>
                                    <Type>Integer</Type>
                            </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>
                            </Properties>
                    </LiveStreamPacketizer>
                    <HTTPStreamer>
                            <!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
                            <Properties>
                            </Properties>
                    </HTTPStreamer>
                    <Repeater>
                            <OriginURL></OriginURL>
                            <QueryString><![CDATA[]]></QueryString>
                    </Repeater> 
                    <Modules>
                            <Module>
                                    <Name>base</Name>
                                    <Description>Base</Description>
                                    <Class>com.wowza.wms.module.ModuleCore</Class>
                            </Module>
                            <Module>
                                    <Name>properties</Name>
                                    <Description>Properties</Description>
                                    <Class>com.wowza.wms.module.ModuleProperties</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>
                    </Modules>
                    <!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
                    <Properties>
                    </Properties>
            </Application>
    </Root>
    My audioonly template:
    <!-- Example template for audio only transcoding to AAC from any support audio codec -->
    <Root>
            <Transcode>
                    <Encodes>
                            <!-- Example Encode block for source, not required unless Member of StreamNameGroup. -->
                            <Encode>
                                    <Enable>true</Enable>
                                    <Name>aac</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>48000</Bitrate>                
                                            <Parameters>
                                            </Parameters>
                                    </Audio>
                                    <Properties>
                                    </Properties>
                            </Encode>
                    </Encodes>
                    <Decode>
                    </Decode>
                    <StreamNameGroups>
                    </StreamNameGroups>
                    <Properties>
                    </Properties>
            </Transcode>
    </Root>
    The system is an Debian (still Lenny) 64bit running a Wowza 3.1.2 with java 1.6.0_26

    In the access.log the following lines are listed:
    JNI:TranscoderSession.audioDecoderCreate[_defaultVHost_:live/_definst_/***.stream]: Create audio decoder: MP3: default
    transcoder      INFO    200     ***.stream {codec:MP3, objectType:MPEG1LAYER3, sampleRate:44100, channels:2}
    JNI:TranscoderSession.audioEncoderAdd[_defaultVHost_:live/_definst_/***.stream:aac]: Create audio encoder: AAC: default
    JNI:AudioEncoderAAC.initialize[_defaultVHost_:live/_definst_/***.stream:aac]: channels:2 sampleRate:44100 bitRate:48000
    Listening to ***.stream works well, but listening to mp4:***.stream_aac plays no music at all and from time to time some rubbish (like extreme fast forwarding) can be heard.

    What do i miss? Any ideas?

    Regards
    .nowrap

  2. #2

    Default

    Which step in the Transcoder Troubleshooting tests fails?

  3. #3
    Join Date
    Jul 2010
    Posts
    5

    Default

    Quote Originally Posted by randall View Post
    Which step in the Transcoder Troubleshooting tests fails?
    Hello,
    i guess, the tests doesn't fail :/

    I checked the steps 3a to 3e under Test #2

    3a is present
    comment server  INFO    200     -       TranscoderSessionNative.loadLibrary: Load transcoder list: /usr/local/WowzaMediaServer/lib-native/linux64/transcoder.list
    3b is present
    comment server  INFO    200     -       LiveStreamTranscoder.init[live/_definst_/***.stream]: Load transcoder template: file:///usr/local/WowzaMediaServer/transcoder/templates/audioonly.xml
    3c is present
    publish stream  INFO    200     ***.stream_aac
    3d is present
    decoder-audio-start     transcoder      INFO    200     ***.stream        {codec:MP3, objectType:MPEG1LAYER3, sampleRate:44100, channels:2}
    3e is present
    encoder-audio-start     transcoder      INFO    200     ***.stream        {name:"aac", bitrate:48000, codec:AAC, objectType:LC, sampleRate:44100, channels:2}
    Some Hints i've found:
    comment server  INFO    200     -       JNI:TranscoderSession.isCUDAAvailable[_defaultVHost_:live/_definst_/***.stream]: NVidia CUDA hardware acceleration is NOT available on Linux
    comment server  INFO    200     -       JNI:TranscoderSession.isQuickSyncAvailable[_defaultVHost_:live/_definst_/***.stream]: Intel Quick Sync hardware acceleration is NOT available on Linux
    But this is the correct behaviour under linux, i guess and the software transcoder jumps in, or?

    And:
    comment server  WARN    200     -       TranscodingStreamUtils.loadTemplateStreamVideo: Error parsing transcoding template: (file:///usr/local/WowzaMediaServer/transcoder/templates/audioonly.xml:aac). Video <Bitrate> can only be set to ${SourceVideoBitrate} if <Codec> is set to PassThru. Video <Bitrate> will be set to: 250000
    Fixing this setting doesn't change the none hearable transcoded audio.

    Within my Flash Tester i got the following debug output:
    nsPlay: NetStream.Play.Start (Started playing ***.stream_aac.)
    onMetaData
      trackinfo = [object Object]
      transcoder = [object Object]
      audiodatarate = 46
      audiochannels = 2
      audiosamplerate = 44100
      StreamTitle =  - 
      audiocodecid = mp4a
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    nsPlay: NetStream.Buffer.Full (undefined)
    nsPlay: NetStream.Buffer.Empty (undefined)
    Regards
    .nowrap

  4. #4
    Join Date
    Jul 2010
    Posts
    5

    Default

    I found my error, a missing Property-XML-Container within the MediaCaster section of the Application.xml ;)

    This was wrong:
    <Properties>
    	<Name>shoutcastMP3GroupCount</Name>
    	<Value>1</Value>
    	<Type>Integer</Type>                         
    </Properties>
    It needs to be;
    <Properties>
    	<Property>
    		<Name>shoutcastMP3GroupCount</Name>
    		<Value>1</Value>
    		<Type>Integer</Type>
    	</Property>                                  
    </Properties>

  5. #5

    Default

    Thanks for reporting your solution. Seeing your troubleshooting steps might help someone else.

Similar Threads

  1. Audio Only Transcoding Icecast/Shoutcast MP3 to AAC. How to?
    By cadymaritz in forum AddOn: Transcoder
    Replies: 2
    Last Post: 12-13-2012, 05:45 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
  •