[FFmpeg-user] Are opus stream recordings generated by ffmpeg invalid?

Ferdi Scholten ferdi at sttc-nlp.nl
Tue May 2 09:40:06 EEST 2023


On Monday, May 1, 2023 at 09:01:23 PM GMT+3, Ferdi Scholten 
<ferdi at sttc-nlp.nl> wrote:
> Can you tell what exact command you used to record these streams? Which
> encoder did you use (two possibilities) and what was the screen output
> of the command?
>
> I use the following script:
>
> #!/bin/sh
> set -e
> url="http://stream.alandsradio.ax/stream.ogg"
> mkdir test
> cd test
> ffmpeg -t 50 -i "$url" -c copy -f segment -segment_time 20 -reset_timestamps 1 -strftime 1 test-record'-%FT%H%M%S%z'-reset.opus
> ffmpeg -t 50 -i "$url" -c copy -f segment -segment_time 20 -reset_timestamps 0 -strftime 1 test-record'-%FT%H%M%S%z'-no-reset.opus
> ffmpeg -t 50 -i "$url" -c copy -f segment -segment_time 20 -reset_timestamps 1 -strftime 1 -copyts test-record'-%FT%H%M%S%z'-reset-copyts.opus
> ffmpeg -t 50 -i "$url" -c copy -f segment -segment_time 20 -reset_timestamps 0 -strftime 1 -copyts test-record'-%FT%H%M%S%z'-no-reset-copyts.opus
> ffmpeg -t 20 -i "$url" -c copy -copyts test-record-no-segments-copyts.opus
> ffmpeg -t 20 -i "$url" -c copy test-record-no-segments.opus
>
> This time I installed ffmpeg from https://git.ffmpeg.org/ffmpeg.git: N-110439-g5617465916
>
> mpd (0.22.11) can only properly seek the last file. For the segmented files it gives "Seek amount would seek past the end of the song". I did not test by using ffmpeg option -stream_segment. As for test-record-no-segments-copyts.opus mpd kind of seeks to right position, but moves and starts playback from the start anyway.
>
> FWIW screen output:
>
>
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x559ab050a7c0] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007570.849292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> [segment @ 0x559ab0566d00] Opening 'test-record-2023-05-02T054248+0300-reset.opus' for writing
> Output #0, segment, to 'test-record-%FT%H%M%S%z-reset.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [segment @ 0x559ab0566d00] Opening 'test-record-2023-05-02T054304+0300-reset.opus' for writing
> [segment @ 0x559ab0566d00] Opening 'test-record-2023-05-02T054324+0300-reset.opus' for writing
> [out#0/segment @ 0x559ab056d080] video:0kB audio:771kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> size=N/A time=00:00:49.99 bitrate=N/A speed=1.08x
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x55a92012a7c0] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007617.829292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> [segment @ 0x55a920186780] Opening 'test-record-2023-05-02T054335+0300-no-reset.opus' for writing
> Output #0, segment, to 'test-record-%FT%H%M%S%z-no-reset.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [segment @ 0x55a920186780] Opening 'test-record-2023-05-02T054351+0300-no-reset.opus' for writing
> [segment @ 0x55a920186780] Opening 'test-record-2023-05-02T054411+0300-no-reset.opus' for writing
> [out#0/segment @ 0x55a92013d580] video:0kB audio:797kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> size=N/A time=00:00:49.99 bitrate=N/A speed=1.08x
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x5605e63a17c0] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007663.869292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> [segment @ 0x5605e6405200] Opening 'test-record-2023-05-02T054422+0300-reset-copyts.opus' for writing
> Output #0, segment, to 'test-record-%FT%H%M%S%z-reset-copyts.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [segment @ 0x5605e6405200] Opening 'test-record-2023-05-02T054437+0300-reset-copyts.opus' for writing
> [segment @ 0x5605e6405200] Opening 'test-record-2023-05-02T054457+0300-reset-copyts.opus' for writing
> [out#0/segment @ 0x5605e6404700] video:0kB audio:774kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> size=N/A time=00:00:50.00 bitrate=N/A speed= 1.1x
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x561a93ba87c0] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007711.029292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> [segment @ 0x561a93c0c2c0] Opening 'test-record-2023-05-02T054508+0300-no-reset-copyts.opus' for writing
> Output #0, segment, to 'test-record-%FT%H%M%S%z-no-reset-copyts.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [segment @ 0x561a93c0c2c0] Opening 'test-record-2023-05-02T054524+0300-no-reset-copyts.opus' for writing
> [segment @ 0x561a93c0c2c0] Opening 'test-record-2023-05-02T054545+0300-no-reset-copyts.opus' for writing
> [out#0/segment @ 0x561a93c0b580] video:0kB audio:763kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
> size=N/A time=00:00:50.00 bitrate=N/A speed=1.09x
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x55cbfa08a600] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007757.809292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Output #0, opus, to 'test-record-no-segments-copyts.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
>      Metadata:
>        icy-pub         : 0
>        encoder         : Lavf60.5.100
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [out#0/opus @ 0x55cbfa0ed500] video:0kB audio:316kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.842010%
> size=     318kB time=00:00:20.00 bitrate= 130.4kbits/s speed=1.27x
> ffmpeg version N-110439-g5617465916 Copyright (c) 2000-2023 the FFmpeg developers
>    built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
>    configuration:
>    libavutil      58.  6.100 / 58.  6.100
>    libavcodec     60. 10.100 / 60. 10.100
>    libavformat    60.  5.100 / 60.  5.100
>    libavdevice    60.  2.100 / 60.  2.100
>    libavfilter     9.  7.100 /  9.  7.100
>    libswscale      7.  2.100 /  7.  2.100
>    libswresample   4. 11.100 /  4. 11.100
> [ogg @ 0x55d786ef85c0] 1 bytes of comment header remain
> Input #0, ogg, from 'http://stream.alandsradio.ax/stream.ogg':
>    Metadata:
>      icy-pub         : 0
>    Duration: N/A, start: 9007774.149292, bitrate: N/A
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
> Output #0, opus, to 'test-record-no-segments.opus':
>    Metadata:
>      icy-pub         : 0
>      encoder         : Lavf60.5.100
>    Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
>      Metadata:
>        icy-pub         : 0
>        encoder         : Lavf60.5.100
> Stream mapping:
>    Stream #0:0 -> #0:0 (copy)
> Press [q] to stop, [?] for help
> [out#0/opus @ 0x55d786f5b480] video:0kB audio:281kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.938108%
> size=     284kB time=00:00:19.99 bitrate= 116.3kbits/s speed=1.29x
>
>
so you are streamcopying, without (re)encoding and there is only audio 
streams, so the segment output that depends on a video stream cannot 
work properly. Likely resulting in output where the stream and container 
info do not match and thus cause problems.
This is also why the last command does work, it does not depend on a 
video stream for its output.


More information about the ffmpeg-user mailing list