add AAC+ file header to new streams

View: New views
5 Messages — Rating Filter:   Alert me  

add AAC+ file header to new streams

by Ross Levis :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all.

I believe there is an opportunity to have thousands of Shoutcast servers
replaced with Icecast.

What will do this is if Icecast can send a MPEG-4 AAC+ header as the first
data a player receives when connecting to an audio/aacp stream.

The reason for this is the AAC+ support added to Adobe Flash player last
December.  I could hear a loud sigh of relief each around the world when
this was announced.  There are literally thousands of internet stations
wanting to use AAC+ embedded in their websites.

However, it turns out that Flash requires a normal AAC+ file header before
it will decode the audio.  I believe it's own Flash Media Server provides
this, but people are not going to spend $1000 on it.

So the question is, can Icecast be configured to send some initial bytes
when a listener connects?  Even if a header was extracted and placed into a
file?

Thanks,
Ross.


_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast

Re: add AAC+ file header to new streams

by oddsock :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hate to burst the "collective sigh of relief" bubble, but Flash's HTTP-based streaming within their player is horribly broken.  First off, in order to get it to even *stream*, you need to fake the content-length in the initial response header.  Seemingly innocent at first, what this, in fact, does is cause the player to download that much data, regardless of "playstate".  So, lets say you've built a nice flash player with a big ole "stop" button on it that stops the NetConnection, bingo, the audio stops.  Unfortunately, due to the content-length header you sent, Flash (in it's infinite wisdom) decides to keep on downloading the stream unbeknownst to you, wasting a TON of bandwidth and possibly filling up your hard drive with cache files.

This is all information I got from a LOT of testing with Flash's HTTP-based streaming with MP3, I suspect that it hasn't changed much, since the "content-length" tweak is still required for it to connect properly.  I don't see a whole lot of motivation for them to fix these issues, thus allowing people to stream using non-Flash Media Servers.

That being said, caching a the AAC+ header is certainly something that can be done in Icecast, heck, it's REQUIRED for streaming ogg vorbis streams (caching the first 3 pages of a vorbis stream - containing codebooks and other critical goodies).

On a side note, Flash's RTMP (proprietary protocol) streaming does work very well, but, of course, requires a Flash Media Server.. Which has it's share of problems as well.


Ed

On Thu, Jun 12, 2008 at 5:37 AM, Ross Levis <ross@...> wrote:
Hi all.

I believe there is an opportunity to have thousands of Shoutcast servers
replaced with Icecast.

What will do this is if Icecast can send a MPEG-4 AAC+ header as the first
data a player receives when connecting to an audio/aacp stream.

The reason for this is the AAC+ support added to Adobe Flash player last
December.  I could hear a loud sigh of relief each around the world when
this was announced.  There are literally thousands of internet stations
wanting to use AAC+ embedded in their websites.

However, it turns out that Flash requires a normal AAC+ file header before
it will decode the audio.  I believe it's own Flash Media Server provides
this, but people are not going to spend $1000 on it.

So the question is, can Icecast be configured to send some initial bytes
when a listener connects?  Even if a header was extracted and placed into a
file?

Thanks,
Ross.


_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast


_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast

Re: add AAC+ file header to new streams

by Karl Heyes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

oddsock wrote:

> That being said, caching a the AAC+ header is certainly something that
> can be done in Icecast, heck, it's REQUIRED for streaming ogg vorbis
> streams (caching the first 3 pages of a vorbis stream - containing
> codebooks and other critical goodies).

Technically icecast could be configured to cache/send something
initially if the format is parsed but that is not the case for AAC like
it is for vorbis.  I doubt that the header in question is constant either.

karl.

_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast

Re: add AAC+ file header to new streams

by Michael Smith-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Jun 12, 2008 at 3:37 AM, Ross Levis <ross@...> wrote:
>
> So the question is, can Icecast be configured to send some initial bytes
> when a listener connects?  Even if a header was extracted and placed into a
> file?

On a technical level, this is pretty easy. You're obviously welcome to
add this to your personal copy of icecast, and use it however you
want. The icecast project is, of course, uninterested in adding
explicit support for non-free codecs, so it won't ever be in an
official release.

HTTP live streaming to flash doesn't work all that well, though. If
you were serious about this, you'd implement an RTMP server module for
icecast (or drop icecast and use a third-party RTMP server - there's
at least one that's open source).

Mike
_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast

Re: add AAC+ file header to new streams

by Greg J. Ogonowski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Flash HTTP AAC/HE-AAC streaming is disabled by design in the Flash
Player. In order to correctly "stream" AAC/HE-AAC to the Flash
Player, an RTMP encoder must be used.
Example here:
http://www.opticodec.com/flash

There are some implementations out there that do a continuous
progressive download of an AAC/HE-AAC file. This is not true
streaming, as the content is cached to the user hard disk, and if not
managed carefully, allows for glitches in the audio, not to mention
filling up hard disks. Progressive downloading is very fundamentally
different than what Icecast2 Server currently delivers for live
streaming, and does not work nearly as well as true Icecast2 ICY streaming.

-greg.
ORBAN


At 03:37 2008-06-12, Ross Levis wrote:

>Hi all.
>
>I believe there is an opportunity to have thousands of Shoutcast servers
>replaced with Icecast.
>
>What will do this is if Icecast can send a MPEG-4 AAC+ header as the first
>data a player receives when connecting to an audio/aacp stream.
>
>The reason for this is the AAC+ support added to Adobe Flash player last
>December.  I could hear a loud sigh of relief each around the world when
>this was announced.  There are literally thousands of internet stations
>wanting to use AAC+ embedded in their websites.
>
>However, it turns out that Flash requires a normal AAC+ file header before
>it will decode the audio.  I believe it's own Flash Media Server provides
>this, but people are not going to spend $1000 on it.
>
>So the question is, can Icecast be configured to send some initial bytes
>when a listener connects?  Even if a header was extracted and placed into a
>file?
>
>Thanks,
>Ross.
>
>
>_______________________________________________
>Icecast mailing list
>Icecast@...
>http://lists.xiph.org/mailman/listinfo/icecast


__________________________________________________________________________
Greg J. Ogonowski
VP Product Development
ORBAN / CRL, Inc.
Diamond Bar, CA  91765  USA
greg@...
http://www.orban.com

_______________________________________________
Icecast mailing list
Icecast@...
http://lists.xiph.org/mailman/listinfo/icecast