[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