[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