Discussion:
[libav-tools] Audio streaming over WiFi network (UDP)
Robert Jaroszuk
2015-12-28 15:39:09 UTC
Permalink
Hi,

I need some help with using avconv/avplay for simple audio streaming
over wireless network.

I have an Arietta G25 with ***@400Mhz CPU with linux and I would like
to use this device for streaming audio over wifi network.
On this embedded linux I use avconv to encode the audio into mpeg stream
and send it over rtp to multicast address:

# /usr/bin/avconv -f oss -i /dev/dsp -ar 22050 -ab 64k -ac 1
-filter_complex 'volume=50' -f mpeg rtp://224.0.0.1:1234/
avconv version 11.4-6:11.4-1~deb8u1, Copyright (c) 2000-2014 the Libav
developers
built on Jun 4 2015 20:16:59 with gcc 4.9.2 (Debian 4.9.2-10)
[oss @ 0x11d1e0] Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, oss, from '/dev/dsp':
Duration: N/A, start: 1167613970.360718, bitrate: N/A
Stream #0.0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Output #0, mpeg, to 'rtp://224.0.0.1:1234/':
Metadata:
encoder : Lavf56.1.0
Stream #0.0: Audio: mp2, 22050 Hz, mono, s16, 64 kb/s
Metadata:
encoder : Lavc56.1.0 mp2
Stream mapping:
Stream #0:0 (pcm_s16le) -> volume
volume -> Stream #0:0 (mp2)
Press ctrl-c to stop encoding
Non-monotonous DTS in output stream 0:0; previous: 1225224, current:
1224159; changing to 1225225. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 2886678, current:
2886580; changing to 2886679. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 2886820, current:
2886302; changing to 2886821. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 4550980, current:
4550020; changing to 4550981. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 5541698, current:
5540641; changing to 5541699. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 5541699, current:
5541588; changing to 5541700. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6023020, current:
6020335; changing to 6023021. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6023021, current:
6022424; changing to 6023022. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6506967, current:
6506029; changing to 6506968. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6984910, current:
6984229; changing to 6984911. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6984911, current:
6984253; changing to 6984912. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6984912, current:
6983143; changing to 6984913. This may result in incorrect timestamps in
the output file.
Non-monotonous DTS in output stream 0:0; previous: 6984913, current:
6984543; changing to 6984914. This may result in incorrect timestamps in
the output file.
size= 656kB time=83.02 bitrate= 64.7kbits/s

On the laptop I use avplay to listen:

***@laptop ~ $ avplay -f mpeg -i rtp://224.0.0.1:1234
avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the
Libav developers
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[mpeg @ 0x7efef8005be0] max_analyze_duration reached
[mpeg @ 0x7efef8005be0] Estimating duration from bitrate, this may be
inaccurate
Input #0, mpeg, from 'rtp://224.0.0.1:1234':
Duration: N/A, start: 1.000000, bitrate: 64 kb/s
Stream #0.0[0x1c0]: Audio: mp2, 22050 Hz, 2 channels, s16p, 64 kb/s
[mp2 @ 0x7efef8004b40] Header missingvq= 0KB sq= 0B f=0/0
103.42 A-V: 0.000 s:0.0 aq= 0KB vq= 0KB sq= 0B f=0/0

Unfortunately, after ~10-20 seconds audio queue (aq) comes to zero kB
and audio starts to interrupt constantly.
I think it's because the embedded system is overloaded, but as far as I
can see, the avconv is using 100% cpu and the load is higher than 1.
I tried to use ac3 codec, but it didn't help.
Also changing the bitrate or audio sampling rate didn't help. avconv
still eats almost 100% cpu power, no matter how I use it.
Do you have any idea what could be changed?

This device I am using is not so powerful, but it should easily handle
this kind of tasks.

Thank you.
R.
Luca Barbato
2016-01-02 12:55:59 UTC
Permalink
Post by Robert Jaroszuk
Hi,
I need some help with using avconv/avplay for simple audio streaming
over wireless network.
to use this device for streaming audio over wifi network.
On this embedded linux I use avconv to encode the audio into mpeg stream
# /usr/bin/avconv -f oss -i /dev/dsp -ar 22050 -ab 64k -ac 1
-filter_complex 'volume=50' -f mpeg rtp://224.0.0.1:1234/
avconv version 11.4-6:11.4-1~deb8u1, Copyright (c) 2000-2014 the Libav
developers
built on Jun 4 2015 20:16:59 with gcc 4.9.2 (Debian 4.9.2-10)
Guessed Channel Layout for Input Stream #0.0 : stereo
Duration: N/A, start: 1167613970.360718, bitrate: N/A
Stream #0.0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
encoder : Lavf56.1.0
Stream #0.0: Audio: mp2, 22050 Hz, mono, s16, 64 kb/s
encoder : Lavc56.1.0 mp2
Stream #0:0 (pcm_s16le) -> volume
volume -> Stream #0:0 (mp2)
Press ctrl-c to stop encoding
1224159; changing to 1225225. This may result in incorrect timestamps in
the output file.
2886580; changing to 2886679. This may result in incorrect timestamps in
the output file.
2886302; changing to 2886821. This may result in incorrect timestamps in
the output file.
4550020; changing to 4550981. This may result in incorrect timestamps in
the output file.
5540641; changing to 5541699. This may result in incorrect timestamps in
the output file.
5541588; changing to 5541700. This may result in incorrect timestamps in
the output file.
6020335; changing to 6023021. This may result in incorrect timestamps in
the output file.
6022424; changing to 6023022. This may result in incorrect timestamps in
the output file.
6506029; changing to 6506968. This may result in incorrect timestamps in
the output file.
6984229; changing to 6984911. This may result in incorrect timestamps in
the output file.
6984253; changing to 6984912. This may result in incorrect timestamps in
the output file.
6983143; changing to 6984913. This may result in incorrect timestamps in
the output file.
6984543; changing to 6984914. This may result in incorrect timestamps in
the output file.
size= 656kB time=83.02 bitrate= 64.7kbits/s
avplay version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2003-2014 the
Libav developers
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
inaccurate
Duration: N/A, start: 1.000000, bitrate: 64 kb/s
Stream #0.0[0x1c0]: Audio: mp2, 22050 Hz, 2 channels, s16p, 64 kb/s
103.42 A-V: 0.000 s:0.0 aq= 0KB vq= 0KB sq= 0B f=0/0
Unfortunately, after ~10-20 seconds audio queue (aq) comes to zero kB
and audio starts to interrupt constantly.
I think it's because the embedded system is overloaded, but as far as I
can see, the avconv is using 100% cpu and the load is higher than 1.
That is pretty much telling that the system is pegged.
Post by Robert Jaroszuk
I tried to use ac3 codec, but it didn't help.
Also changing the bitrate or audio sampling rate didn't help. avconv
still eats almost 100% cpu power, no matter how I use it.
Do you have any idea what could be changed?
If you have perf installed you might try to figure out where most of the
time is spent, maybe it is just some kind of busy loop that should be
sorted out here.

lu

Loading...