Opened 5 weeks ago

Last modified 5 weeks ago

#10957 new defect

Seek during flac demux fails for some sources

Reported by: Peter Z Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
Demux seeking in some flac files created by ffmpeg fails. Demux and decode without seeking (just skip the -ss in the repro) in the same file succeeds and produces good results so it appears the file itself is fine.
Official flac tool has no complaints about the original file either.

Example file was cut from the end of the original file that I unfortunately can not share.

Tested on master as of 2024-04-08 (b0ef9e35e80990b0ba03dd724a6d41cccba100b1).

How to reproduce:

% ./ffmpeg -v trace -ss 0.1 -i seek_not_working.flac -f null =
ffmpeg version N-114734-gb0ef9e35e8 Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 15.0.0 (clang-1500.3.9.4)
  configuration: --enable-static --enable-ffmpeg --enable-ffprobe --disable-shared --enable-gpl --enable-gray --enable-nonfree --enable-iconv --enable-libxml2 --enable-libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265 --disable-stripping --enable-libfreetype --enable-libsoxr --extra-cflags=-I/opt/homebrew/include --extra-ldflags='-L/opt/homebrew/lib -Wl,-ld_classic'
  libavutil      59. 13.100 / 59. 13.100
  libavcodec     61.  5.101 / 61.  5.101
  libavformat    61.  3.100 / 61.  3.100
  libavdevice    61.  2.100 / 61.  2.100
  libavfilter    10.  2.101 / 10.  2.101
  libswscale      8.  2.100 /  8.  2.100
  libswresample   5.  2.100 /  5.  2.100
  libpostproc    58.  2.100 / 58.  2.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'trace'.
Reading option '-ss' ... matched as option 'ss' (start transcoding at specified time) with argument '0.1'.
Reading option '-i' ... matched as input url with argument 'seek_not_working.flac'.
Reading option '-f' ... matched as option 'f' (force container format (auto-detected otherwise)) with argument 'null'.
Reading option '=' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument trace.
Successfully parsed a group of options.
Parsing a group of options: input url seek_not_working.flac.
Applying option ss (start transcoding at specified time) with argument 0.1.
Successfully parsed a group of options.
Opening an input file: seek_not_working.flac.
[AVFormatContext @ 0x137504680] Opening 'seek_not_working.flac' for reading
[file @ 0x600000438280] Setting default whitelist 'file,crypto,data'
Probing flac score:100 size:2048
[flac @ 0x137504680] Format flac probed with size=2048 and score=100
[flac @ 0x137504680] Before avformat_find_stream_info() pos: 8288 bytes read:32768 seeks:0 nb_streams:1
[flac @ 0x137504680] All info found
[flac @ 0x137504680] stream 0: start_time: 109.923265 duration: 112
[flac @ 0x137504680] format: start_time: 109.923265 duration: 112 (estimate from stream) bitrate=6 kb/s
[flac @ 0x137504680] After avformat_find_stream_info() pos: 59392 bytes read:65536 seeks:0 frames:1
[flac @ 0x137504680] read_seek: 0 4852026
[flac @ 0x137504680] gen_seek: 0 4852026
[NULL @ 0x137504d90] Junk frame till offset 684
Input #0, flac, from 'seek_not_working.flac':
  Metadata:
    encoder         : Lavf55.33.100
  Duration: 00:01:52.00, start: 109.923265, bitrate: 6 kb/s
  Stream #0:0, 1, 1/44100: Audio: flac, 44100 Hz, stereo, s32 (24 bit)
Successfully opened the file.
Parsing a group of options: output url =.
Applying option f (force container format (auto-detected otherwise)) with argument null.
Successfully parsed a group of options.
Opening an output file: =.
[out#0/null @ 0x600001f20000] No explicit maps, mapping streams automatically...
[aost#0:0/pcm_s16le @ 0x137505ee0] Created audio stream from input stream 0:0
detected 10 logical cores
Successfully opened the file.
Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
[aost#0:0/pcm_s16le @ 0x137505ee0] Starting thread...
[af#0:0 @ 0x600001820000] Starting thread...
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Starting thread...
[in#0/flac @ 0x600001624200] Starting thread...
Press [q] to stop, [?] for help
[in#0/flac @ 0x600001624200] EOF while reading input
[in#0/flac @ 0x600001624200] Terminating thread with return code 0 (success)
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Decoder thread received EOF packet
[flac @ 0x137105a10] invalid residual
[flac @ 0x137105a10] decode_frame() failed
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Decoding error: Invalid data found when processing input
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Decoder returned EOF, finishing
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Decode error rate 1 exceeds maximum 0.666667
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Task finished with error code: -1145393733 (Error number -1145393733 occurred)
[aist#0:0/flac @ 0x137505620] [dec:flac @ 0x137104d00] Terminating thread with return code -1145393733 (Error number -1145393733 occurred)
[graph_0_in_0:0 @ 0x600001d20160] Setting 'time_base' to value '1/44100'
[graph_0_in_0:0 @ 0x600001d20160] Setting 'sample_rate' to value '44100'
[graph_0_in_0:0 @ 0x600001d20160] Setting 'sample_fmt' to value 's32'
[graph_0_in_0:0 @ 0x600001d20160] Setting 'channel_layout' to value 'stereo'
[graph_0_in_0:0 @ 0x600001d20160] tb:1/44100 samplefmt:s32 samplerate:44100 chlayout:stereo
[format_out_0_0 @ 0x600001d20370] Setting 'sample_fmts' to value 's16'
[format_out_0_0 @ 0x600001d20370] auto-inserting filter 'auto_aresample_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 0x600000138000] query_formats: 5 queried, 6 merged, 7 already done, 0 delayed
[auto_aresample_0 @ 0x600001d38000] [SWR @ 0x120008000] Using fltp internally between filters
[auto_aresample_0 @ 0x600001d38000] ch:2 chl:stereo fmt:s32 r:44100Hz -> ch:2 chl:stereo fmt:s16 r:44100Hz
[out_0_0 @ 0x600001d202c0] EOF on sink link out_0_0:default.
[af#0:0 @ 0x600001820000] Filtergraph returned EOF, finishing
[af#0:0 @ 0x600001820000] All consumers returned EOF
[aost#0:0/pcm_s16le @ 0x137505ee0] No filtered frames for output stream, trying to initialize anyway.
Output #0, null, to '=':
  Metadata:
    encoder         : Lavf61.3.100
  Stream #0:0, 0, 1/44100: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
      Metadata:
        encoder         : Lavc61.5.101 pcm_s16le
[out#0/null @ 0x600001f20000] Starting thread...
[aost#0:0/pcm_s16le @ 0x137505ee0] Encoder thread received EOF
[aost#0:0/pcm_s16le @ 0x137505ee0] Terminating thread with return code 0 (success)
[out#0/null @ 0x600001f20000] All streams finished
[out#0/null @ 0x600001f20000] Terminating thread with return code 0 (success)
[af#0:0 @ 0x600001820000] Terminating thread with return code 0 (success)
[out#0/null @ 0x600001f20000] Output file #0 (=):
[out#0/null @ 0x600001f20000]   Output stream #0:0 (audio): 0 frames encoded (0 samples); 0 packets muxed (0 bytes);
[out#0/null @ 0x600001f20000]   Total: 0 packets (0 bytes) muxed
[out#0/null @ 0x600001f20000] video:0KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
[out#0/null @ 0x600001f20000] Output file is empty, nothing was encoded(check -ss / -t / -frames parameters if used)
size=N/A time=N/A bitrate=N/A speed=N/A
[in#0/flac @ 0x600001624200] Input file #0 (seek_not_working.flac):
[in#0/flac @ 0x600001624200]   Input stream #0:0 (audio): 1 packets read (228 bytes); 0 frames decoded; 1 decode errors (0 samples);
[in#0/flac @ 0x600001624200]   Total: 1 packets (228 bytes) demuxed
[AVIOContext @ 0x1375048f0] Statistics: 152340 bytes read, 1 seeks
Conversion failed!

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.

Attachments (1)

seek_not_working.flac (92.9 KB ) - added by Peter Z 5 weeks ago.
file exhibiting problem

Download all attachments as: .zip

Change History (2)

by Peter Z, 5 weeks ago

Attachment: seek_not_working.flac added

file exhibiting problem

comment:1 by Peter Z, 5 weeks ago

Summary: ffmpeg flac seek demux failureSeek during flac demux fails for some sources
Note: See TracTickets for help on using tickets.