FAAC bitrate

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

FAAC bitrate

Mike Dyer
Hi all,

I'm trying to capture and encode some live audio/video to an mpeg-ts.
The audio is compressed using faac. However I've noticed that whatever
bitrate I request from faac, its always 128kbps.

I can replicate using an audio-only pipeline:

gst-launch alsasrc device=hw:0 !
audio/x-raw-int,channels=2,rate=44100,width=16 ! audioconvert ! faac
outputformat=1 profile=2 bitrate=8000 ! ffmux_mpegts ! filesink
location=faac.ts

gst-launch -v gives:

Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
/GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstFaac:faac0.GstPad:src: caps = audio/mpeg,
mpegversion=(int)4, channels=(int)2, rate=(int)44100,
codec_data=(buffer)1210
/GstPipeline:pipeline0/GstFaac:faac0.GstPad:sink: caps =
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/ffmux_mpegts:ffmux_mpegts0.GstPad:audio_0: caps =
audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100,
codec_data=(buffer)1210
/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps =
video/mpegts, systemstream=(boolean)true

How do I make faac listen to the bitrate setting?  

--
Mike Dyer
R&D Engineer
ProVision Communications


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: FAAC bitrate

Stefan Sauer
Mike Dyer wrote:

> Hi all,
>
> I'm trying to capture and encode some live audio/video to an mpeg-ts.
> The audio is compressed using faac. However I've noticed that whatever
> bitrate I request from faac, its always 128kbps.
>
> I can replicate using an audio-only pipeline:
>
> gst-launch alsasrc device=hw:0 !
> audio/x-raw-int,channels=2,rate=44100,width=16 ! audioconvert ! faac
> outputformat=1 profile=2 bitrate=8000 ! ffmux_mpegts ! filesink
> location=faac.ts
>  

hat looks correct, also the plugin code itself does not show anything
obviously wrong. How did you verify the bitrate?

Stefan

> gst-launch -v gives:
>
> Setting pipeline to PAUSED ...
> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstAudioSrcClock
> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> /GstPipeline:pipeline0/GstFaac:faac0.GstPad:src: caps = audio/mpeg,
> mpegversion=(int)4, channels=(int)2, rate=(int)44100,
> codec_data=(buffer)1210
> /GstPipeline:pipeline0/GstFaac:faac0.GstPad:sink: caps =
> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> /GstPipeline:pipeline0/ffmux_mpegts:ffmux_mpegts0.GstPad:audio_0: caps =
> audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100,
> codec_data=(buffer)1210
> /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps =
> video/mpegts, systemstream=(boolean)true
>
> How do I make faac listen to the bitrate setting?  
>
>  


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: FAAC bitrate

Mike Dyer
On Fri, 2010-01-08 at 11:03 +0200, Stefan Kost wrote:

> Mike Dyer wrote:
> > Hi all,
> >
> > I'm trying to capture and encode some live audio/video to an mpeg-ts.
> > The audio is compressed using faac. However I've noticed that whatever
> > bitrate I request from faac, its always 128kbps.
> >
> > I can replicate using an audio-only pipeline:
> >
> > gst-launch alsasrc device=hw:0 !
> > audio/x-raw-int,channels=2,rate=44100,width=16 ! audioconvert ! faac
> > outputformat=1 profile=2 bitrate=8000 ! ffmux_mpegts ! filesink
> > location=faac.ts
> >  
>
> hat looks correct, also the plugin code itself does not show anything
> obviously wrong. How did you verify the bitrate?
>
> Stefan

I used an mpeg ts analyser and checked the payload rate (in bps) for the
audio stream.

As a sanity check:

gst-launch -v audiotestsrc is-live=true wave=9 do-timestamp=true
num-buffers=450 ! audio/x-raw-int,channels=2,rate=44100,width=16 !
audioconvert ! faac outputformat=1 profile=2 bitrate=8000 !
ffmux_mpegts ! filesink location=8mbps.ts

gst-launch -v audiotestsrc is-live=true wave=9 do-timestamp=true
num-buffers=450 ! audio/x-raw-int,channels=2,rate=44100,width=16 !
audioconvert ! faac outputformat=1 profile=2 bitrate=128000 !
ffmux_mpegts ! filesink location=128mbps.ts

ls -l *.ts gives:

-rw-rw-r--. 1 mike mike  234436 2010-01-08 10:13 128mbps.ts
-rw-rw-r--. 1 mike mike  232556 2010-01-08 10:13 8mbps.ts

Two files of about the same size, for two very different 'bitrates'.

Mike

>
> > gst-launch -v gives:
> >
> > Setting pipeline to PAUSED ...
> > /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
> > /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
> > /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > Pipeline is live and does not need PREROLL ...
> > Setting pipeline to PLAYING ...
> > New clock: GstAudioSrcClock
> > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > /GstPipeline:pipeline0/GstFaac:faac0.GstPad:src: caps = audio/mpeg,
> > mpegversion=(int)4, channels=(int)2, rate=(int)44100,
> > codec_data=(buffer)1210
> > /GstPipeline:pipeline0/GstFaac:faac0.GstPad:sink: caps =
> > audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
> > width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
> > /GstPipeline:pipeline0/ffmux_mpegts:ffmux_mpegts0.GstPad:audio_0: caps =
> > audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100,
> > codec_data=(buffer)1210
> > /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps =
> > video/mpegts, systemstream=(boolean)true
> >
> > How do I make faac listen to the bitrate setting?  
> >
> >  


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: FAAC bitrate

Stefan Sauer
Am 08.01.2010 12:22, schrieb Mike Dyer:

> On Fri, 2010-01-08 at 11:03 +0200, Stefan Kost wrote:
>> Mike Dyer wrote:
>>> Hi all,
>>>
>>> I'm trying to capture and encode some live audio/video to an mpeg-ts.
>>> The audio is compressed using faac. However I've noticed that whatever
>>> bitrate I request from faac, its always 128kbps.
>>>
>>> I can replicate using an audio-only pipeline:
>>>
>>> gst-launch alsasrc device=hw:0 !
>>> audio/x-raw-int,channels=2,rate=44100,width=16 ! audioconvert ! faac
>>> outputformat=1 profile=2 bitrate=8000 ! ffmux_mpegts ! filesink
>>> location=faac.ts
>>>  
>>
>> hat looks correct, also the plugin code itself does not show anything
>> obviously wrong. How did you verify the bitrate?
>>
>> Stefan
>
> I used an mpeg ts analyser and checked the payload rate (in bps) for the
> audio stream.
>
> As a sanity check:
>
> gst-launch -v audiotestsrc is-live=true wave=9 do-timestamp=true
> num-buffers=450 ! audio/x-raw-int,channels=2,rate=44100,width=16 !
> audioconvert ! faac outputformat=1 profile=2 bitrate=8000 !
> ffmux_mpegts ! filesink location=8mbps.ts
>
> gst-launch -v audiotestsrc is-live=true wave=9 do-timestamp=true
> num-buffers=450 ! audio/x-raw-int,channels=2,rate=44100,width=16 !
> audioconvert ! faac outputformat=1 profile=2 bitrate=128000 !
> ffmux_mpegts ! filesink location=128mbps.ts
>
> ls -l *.ts gives:
>
> -rw-rw-r--. 1 mike mike  234436 2010-01-08 10:13 128mbps.ts
> -rw-rw-r--. 1 mike mike  232556 2010-01-08 10:13 8mbps.ts
>
> Two files of about the same size, for two very different 'bitrates'.


Could you please fiel a bug report, mention these dateils, your distro and faac
version?

Stefan

>
> Mike
>
>>
>>> gst-launch -v gives:
>>>
>>> Setting pipeline to PAUSED ...
>>> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
>>> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
>>> /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> Pipeline is live and does not need PREROLL ...
>>> Setting pipeline to PLAYING ...
>>> New clock: GstAudioSrcClock
>>> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> /GstPipeline:pipeline0/GstFaac:faac0.GstPad:src: caps = audio/mpeg,
>>> mpegversion=(int)4, channels=(int)2, rate=(int)44100,
>>> codec_data=(buffer)1210
>>> /GstPipeline:pipeline0/GstFaac:faac0.GstPad:sink: caps =
>>> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,
>>> width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
>>> /GstPipeline:pipeline0/ffmux_mpegts:ffmux_mpegts0.GstPad:audio_0: caps =
>>> audio/mpeg, mpegversion=(int)4, channels=(int)2, rate=(int)44100,
>>> codec_data=(buffer)1210
>>> /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps =
>>> video/mpegts, systemstream=(boolean)true
>>>
>>> How do I make faac listen to the bitrate setting?  
>>>
>>>  
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev 
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel