Opened 5 years ago
Closed 5 years ago
#8084 closed defect (fixed)
Seeking backwards with large mkv files broken
| Reported by: | Kanehekili | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avformat |
| Version: | unspecified | Keywords: | mkv |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug:
The update of ffmpeg 4.2 has a regression when seeking mkv containers larger than 2GB.
The codecs tested were VC-1 and h264.
How to reproduce:
1)Seeking forward/backwards takes a long time , receiving an error like:
[matroska,webm @ 0x801b86f40]Element at 0x81e78160 ending at 0x81ff3e32 exceeds containing master element ending at 0x7e2ea500
Opencv and direct usage of av_seek_frame on large mkv files show this behavior.
av_seek_frame(...AVSEEK_FLAG_BACKWARD) does not work at all, the stream position does not go backwards.
Works with previous version 4.1
ffmpeg version n4.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.0 (GCC)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Change History (7)
comment:1 by , 5 years ago
| Component: | undetermined → avformat |
|---|---|
| Keywords: | mkv added |
| Priority: | normal → important |
comment:2 by , 5 years ago
Update: This happens only in a Matroska Version 2 Container.
Using
ffmpeg -i input.mkv -codec copy output.mkv
changes the format version to 4 - no seeking problems
The test file has the size of 16 GB. I'll try to split a part of it. It had been generated by makemkv, in case that helps
comment:3 by , 5 years ago
I don't think that the version number has anything to do with it (It does not affect seeking or demuxing. It is just used for an initial check whether the file requires a version ffmpeg doesn't support. The version number is not even kept after parsing the header.); but the remuxing definitely might have.
comment:4 by , 5 years ago
To make this a valid ticket, please test current FFmpeg git head, provide the command line you tested together with the complete, uncut console output and upload a sample to your favorite hosting site.
comment:5 by , 5 years ago
| Reproduced by developer: | set |
|---|
I can reproduce this locally, i.e. you don't need to upload your big file.
comment:7 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Fixed in c294f38c91f440880ffd28fda0eeb1154431ab7e (299e0dff1fbc3594eca9e67e18a28331892c23fb in the 4.2 branch).
@cehoyos: Use ffplay to play a Matroska file that is bigger than 2GB. (Using ffmpeg with input seeking (which is what I tested originally) is fine though.)



Can you upload a sample file e.g. here? In your case, you would have to split it (without remuxing).