[FFmpeg-trac] #6678(avformat:new): Read raw amr streams (was: AMR multicast receive: "Operation not permitted")
FFmpeg
trac at avcodec.org
Fri Sep 22 01:50:24 EEST 2017
#6678: Read raw amr streams
-------------------------------------+------------------------------------
Reporter: simonb | Owner:
Type: enhancement | Status: new
Priority: wish | Component: avformat
Version: git-master | Resolution:
Keywords: amr | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+------------------------------------
Changes (by cehoyos):
* component: undetermined => avformat
* priority: normal => wish
* keywords: => amr
* type: defect => enhancement
Old description:
> Summary of the bug: AMR over UDP works between 127.0.0.1 TX and 0.0.0.0
> RX as expected but fails over a multicast address
>
> How to reproduce:
> 1) Create a test transmitter:
> {{{
>
> % ffmpeg -re -f lavfi -i "sine=frequency=432:sample_rate=16000" -c:a
> libvo_amrwbenc -b:a 14250 -f amr udp://@239.200.10.0:1234
>
> }}}
> 2) Create a test receiver probe:
> {{{
>
> % ffprobe -v 9 -loglevel 99 -f amr udp://@239.200.10.0:1234
>
> }}}
>
> Expected result:
> {{{
> ...
> Input #0, amr, from 'udp://0.0.0.0:1234':
> Duration: N/A, bitrate: 14 kb/s
> Stream #0:0, 50, 1/16000: Audio: amr_wb (sawb / 0x62776173), 16000
> Hz, mono, flt
> }}}
>
> Actual result:
> {{{
> ffprobe version N-87327-g18821e3ba1-static
> http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2017 the FFmpeg
> developers
> built with gcc 6.4.0 (Debian 6.4.0-5) 20170906
> configuration: --enable-gpl --enable-version3 --enable-static
> --disable-debug --disable-ffplay --disable-indev=sndio --disable-
> outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-
> gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libvmaf
> --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband
> --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-
> amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-
> libx265 --enable-libxvid --enable-libzimg
> libavutil 55. 75.100 / 55. 75.100
> libavcodec 57.106.101 / 57.106.101
> libavformat 57. 82.100 / 57. 82.100
> libavdevice 57. 8.101 / 57. 8.101
> libavfilter 6.105.100 / 6.105.100
> libswscale 4. 7.103 / 4. 7.103
> libswresample 2. 8.100 / 2. 8.100
> libpostproc 54. 6.100 / 54. 6.100
> [amr @ 0x42411a0] Opening 'udp://239.200.10.0:1234' for reading
> [udp @ 0x4241a40] No default whitelist set
> [udp @ 0x4241a40] end receive buffer size reported is 131072
> [AVIOContext @ 0x4261e40] Statistics: 37 bytes read, 0 seeks
> udp://239.200.10.0:1234: Operation not permitted
> }}}
>
> For comparison, working example of non-multicast UDP
> 1) Create the test transmitter
> {{
>
> % ffmpeg -re -f lavfi -i "sine=frequency=432:sample_rate=16000" -c:a
> libvo_amrwbenc -b:a 14250 -f amr udp://127.0.0.1:1234
>
> }}}
> 2) Create a test receiver probe:
> {{{
>
> % ffprobe -v 9 -loglevel 99 -f amr udp://0.0.0.0:1234
>
> }}}
> Working example result:
> {{{
> ffprobe version N-87327-g18821e3ba1-static
> http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2017 the FFmpeg
> developers
> built with gcc 6.4.0 (Debian 6.4.0-5) 20170906
> configuration: --enable-gpl --enable-version3 --enable-static
> --disable-debug --disable-ffplay --disable-indev=sndio --disable-
> outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-
> gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libvmaf
> --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband
> --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-
> amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-
> libx265 --enable-libxvid --enable-libzimg
> libavutil 55. 75.100 / 55. 75.100
> libavcodec 57.106.101 / 57.106.101
> libavformat 57. 82.100 / 57. 82.100
> libavdevice 57. 8.101 / 57. 8.101
> libavfilter 6.105.100 / 6.105.100
> libswscale 4. 7.103 / 4. 7.103
> libswresample 2. 8.100 / 2. 8.100
> libpostproc 54. 6.100 / 54. 6.100
> [amr @ 0x4b041a0] Opening 'udp://0.0.0.0:1234' for reading
> [udp @ 0x4b04a40] No default whitelist set
> [udp @ 0x4b04a40] end receive buffer size reported is 131072
> [amr @ 0x4b041a0] Before avformat_find_stream_info() pos: 9 bytes read:46
> seeks:0 nb_streams:1
> [amr @ 0x4b041a0] All info found
> [amr @ 0x4b041a0] stream 0: start_time: -576460752303423.500 duration:
> -576460752303423.500
> [amr @ 0x4b041a0] format: start_time: -9223372036854.775 duration:
> -9223372036854.775 bitrate=14 kb/s
> [amr @ 0x4b041a0] After avformat_find_stream_info() pos: 1859 bytes
> read:1859 seeks:0 frames:50
> Input #0, amr, from 'udp://0.0.0.0:1234':
> Duration: N/A, bitrate: 14 kb/s
> Stream #0:0, 50, 1/16000: Audio: amr_wb (sawb / 0x62776173), 16000
> Hz, mono, flt
> [AVIOContext @ 0x4b24e40] Statistics: 1859 bytes read, 0 seeks
> }}}
New description:
Summary of the bug: AMR over UDP works between 127.0.0.1 TX and 0.0.0.0 RX
as expected but fails over a multicast address
How to reproduce:
1) Create a test transmitter:
{{{
% ffmpeg -re -f lavfi -i "sine=frequency=432:sample_rate=16000" -c:a
libvo_amrwbenc -b:a 14250 -f amr udp://@239.200.10.0:1234
}}}
2) Create a test receiver probe:
{{{
% ffprobe -v 9 -loglevel 99 -f amr udp://@239.200.10.0:1234
}}}
Expected result:
{{{
...
Input #0, amr, from 'udp://0.0.0.0:1234':
Duration: N/A, bitrate: 14 kb/s
Stream #0:0, 50, 1/16000: Audio: amr_wb (sawb / 0x62776173), 16000 Hz,
mono, flt
}}}
Actual result:
{{{
ffprobe version N-87327-g18821e3ba1-static
http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2017 the FFmpeg
developers
built with gcc 6.4.0 (Debian 6.4.0-5) 20170906
configuration: --enable-gpl --enable-version3 --enable-static --disable-
debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
--cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-
gray --enable-libfribidi --enable-libass --enable-libvmaf --enable-
libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-
librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-
libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libzimg
libavutil 55. 75.100 / 55. 75.100
libavcodec 57.106.101 / 57.106.101
libavformat 57. 82.100 / 57. 82.100
libavdevice 57. 8.101 / 57. 8.101
libavfilter 6.105.100 / 6.105.100
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
[amr @ 0x42411a0] Opening 'udp://239.200.10.0:1234' for reading
[udp @ 0x4241a40] No default whitelist set
[udp @ 0x4241a40] end receive buffer size reported is 131072
[AVIOContext @ 0x4261e40] Statistics: 37 bytes read, 0 seeks
udp://239.200.10.0:1234: Operation not permitted
}}}
For comparison, working example of non-multicast UDP
1) Create the test transmitter
{{{
% ffmpeg -re -f lavfi -i "sine=frequency=432:sample_rate=16000" -c:a
libvo_amrwbenc -b:a 14250 -f amr udp://127.0.0.1:1234
}}}
2) Create a test receiver probe:
{{{
% ffprobe -v 9 -loglevel 99 -f amr udp://0.0.0.0:1234
}}}
Working example result:
{{{
ffprobe version N-87327-g18821e3ba1-static
http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2017 the FFmpeg
developers
built with gcc 6.4.0 (Debian 6.4.0-5) 20170906
configuration: --enable-gpl --enable-version3 --enable-static --disable-
debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
--cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-
gray --enable-libfribidi --enable-libass --enable-libvmaf --enable-
libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-
librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-
libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libzimg
libavutil 55. 75.100 / 55. 75.100
libavcodec 57.106.101 / 57.106.101
libavformat 57. 82.100 / 57. 82.100
libavdevice 57. 8.101 / 57. 8.101
libavfilter 6.105.100 / 6.105.100
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
[amr @ 0x4b041a0] Opening 'udp://0.0.0.0:1234' for reading
[udp @ 0x4b04a40] No default whitelist set
[udp @ 0x4b04a40] end receive buffer size reported is 131072
[amr @ 0x4b041a0] Before avformat_find_stream_info() pos: 9 bytes read:46
seeks:0 nb_streams:1
[amr @ 0x4b041a0] All info found
[amr @ 0x4b041a0] stream 0: start_time: -576460752303423.500 duration:
-576460752303423.500
[amr @ 0x4b041a0] format: start_time: -9223372036854.775 duration:
-9223372036854.775 bitrate=14 kb/s
[amr @ 0x4b041a0] After avformat_find_stream_info() pos: 1859 bytes
read:1859 seeks:0 frames:50
Input #0, amr, from 'udp://0.0.0.0:1234':
Duration: N/A, bitrate: 14 kb/s
Stream #0:0, 50, 1/16000: Audio: amr_wb (sawb / 0x62776173), 16000 Hz,
mono, flt
[AVIOContext @ 0x4b24e40] Statistics: 1859 bytes read, 0 seeks
}}}
--
Comment:
Replying to [ticket:6678 simonb]:
> For comparison, working example of non-multicast UDP
Hard to understand...
Please test attached patch with {{{-f amrwb}}} and report back.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6678#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list