Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#4774 closed defect (invalid)

Incompatibilities between XBMC/Kodi & mkvalidator relating to how FFmpeg muxes MKVs

Reported by: Drag0nFly Owned by:
Priority: important Component: avformat
Version: git-master Keywords: mkv chapters regression
Cc: nfxjfg@googlemail.com Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

FFmpeg produces non-spec compliant MKVs, which cause warnings with mkvalidator (0.5.0) and introduces strange behaviour when chapter-skipping in XBMC/Kodi (chapters repeat).

This appears to be releated to how the cues entries are created, as evidenced by the output from mkvalidator (included below the full FFmpeg commandline). Or it may be caused by a different issue than the one reported by mkvalidator.

I've included a short (well, as short as can be since it involves skipping chapters) which illustrate the chapter-skip issue. I've also submitted a bug for that issue to the Kodi devs, since I am unsure what specifically is causing this. But obviously they employ FFmpeg in their internals so the issue might be inherited from upstream.

How to reproduce:

ffmpeg -i /data/video/work/fullq/movie.mkv -map 0 -c:v libx264 -level 4.1 -vf crop=1920:1072:0:4 -x264opts deblock=-3,-3:trellis=2:ref=5:subme=10:bframes=8 -preset slow -crf 17 -c:a copy -c:s copy /data/video/work/movie-crf17-slow-custom.mkv

ffmpeg version N-73957-g0a03271 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

For some curious reason FFmpeg no longer prints the date/timestamp 'built on' ... string, so this is not included.

The commandline referenced above is a re-encode (for size), but the behaviour is also introduced when remuxing (-c:v copy)

Sample clip for the (again–possibly unrelated) chapter-skip issue:
(chapter repeat occurs occurs with chapter 3->4, "While you're out, pick up some AA-batteries")

https://www.dropbox.com/s/bixksrvpy0n9vf7/hot.shots.sample.mkv?dl=0

btw.–this FFmpeg-generated sample clip, when remuxed with MakeMKV, fixes the issue during Kodi playback, which indicates an incompatibility with lavf-written files.

Output from mkvalidator for the file generated with the FFmpeg version and commandline options detailed above (trimmed in the middle for size):

WRN311: The Cues entry for timecode 131506 ms is listed after entry 131548 ms
WRN311: The Cues entry for timecode 165540 ms is listed after entry 165624 ms
WRN311: The Cues entry for timecode 178720 ms is listed after entry 178804 ms
WRN311: The Cues entry for timecode 246580 ms is listed after entry 246621 ms
WRN311: The Cues entry for timecode 248707 ms is listed after entry 248749 ms
WRN311: The Cues entry for timecode 251460 ms is listed after entry 251501 ms
WRN311: The Cues entry for timecode 259926 ms is listed after entry 260010 ms
WRN311: The Cues entry for timecode 277819 ms is listed after entry 277861 ms
WRN311: The Cues entry for timecode 290248 ms is listed after entry 290290 ms
WRN311: The Cues entry for timecode 295504 ms is listed after entry 295587 ms
WRN311: The Cues entry for timecode 302177 ms is listed after entry 302260 ms

[...]

WRN311: The Cues entry for timecode 5555133 ms is listed after entry 5555175 ms
WRN311: The Cues entry for timecode 5571816 ms is listed after entry 5571858 ms
WRN311: The Cues entry for timecode 5573985 ms is listed after entry 5574027 ms
WRN311: The Cues entry for timecode 5599719 ms is listed after entry 5599761 ms
WRN311: The Cues entry for timecode 5610105 ms is listed after entry 5610146 ms
WRN311: The Cues entry for timecode 5621199 ms is listed after entry 5621241 ms
WRN311: The Cues entry for timecode 5660363 ms is listed after entry 5660446 ms
WRN311: The Cues entry for timecode 5661865 ms is listed after entry 5661948 ms
WRN311: The Cues entry for timecode 5664617 ms is listed after entry 5664659 ms
WRN311: The Cues entry for timecode 5668288 ms is listed after entry 5668371 ms
WRN311: The Cues entry for timecode 5682969 ms is listed after entry 5683011 ms
WRN311: The Cues entry for timecode 5687432 ms is listed after entry 5687473 ms
WRN311: The Cues entry for timecode 5705241 ms is listed after entry 5705283 ms
WRN311: The Cues entry for timecode 5707118 ms is listed after entry 5707160 ms
WRN311: The Cues entry for timecode 5711873 ms is listed after entry 5711956 ms
WRN311: The Cues entry for timecode 5713875 ms is listed after entry 5713917 ms
WRN311: The Cues entry for timecode 5719380 ms is listed after entry 5719422 ms
WRN311: The Cues entry for timecode 5736731 ms is listed after entry 5736814 ms
WRN311: The Cues entry for timecode 5746407 ms is listed after entry 5746449 ms
WRN311: The Cues entry for timecode 5749661 ms is listed after entry 5749702 ms
WRN311: The Cues entry for timecode 5793162 ms is listed after entry 5793204 ms
WRN311: The Cues entry for timecode 5825653 ms is listed after entry 5825737 ms
WRN311: The Cues entry for timecode 5826946 ms is listed after entry 5826988 ms
WRN311: The Cues entry for timecode 5831576 ms is listed after entry 5831617 ms
WRN311: The Cues entry for timecode 5852096 ms is listed after entry 5852138 ms
WRN311: The Cues entry for timecode 5857810 ms is listed after entry 5857852 ms
WRN311: The Cues entry for timecode 5871532 ms is listed after entry 5871616 ms
WRN311: The Cues entry for timecode 5875036 ms is listed after entry 5875078 ms
WRN311: The Cues entry for timecode 5876037 ms is listed after entry 5876120 ms
WRN311: The Cues entry for timecode 5879040 ms is listed after entry 5879082 ms
WRN311: The Cues entry for timecode 5884462 ms is listed after entry 5884545 ms
WRN311: The Cues entry for timecode 5894889 ms is listed after entry 5894931 ms
WRN311: The Cues entry for timecode 5897100 ms is listed after entry 5897183 ms
WRN311: The Cues entry for timecode 5907068 ms is listed after entry 5907151 ms
WRN311: The Cues entry for timecode 5918079 ms is listed after entry 5918121 ms
WRN311: The Cues entry for timecode 5961497 ms is listed after entry 5961581 ms
WRN311: The Cues entry for timecode 6001496 ms is listed after entry 6001579 ms
WRN311: The Cues entry for timecode 6025353 ms is listed after entry 6025436 ms
WRN311: The Cues entry for timecode 6039450 ms is listed after entry 6039492 ms
WRN311: The Cues entry for timecode 6051045 ms is listed after entry 6051128 ms
WRN311: The Cues entry for timecode 6087039 ms is listed after entry 6087081 ms
WRN311: The Cues entry for timecode 6109228 ms is listed after entry 6109270 ms
WRN311: The Cues entry for timecode 6130041 ms is listed after entry 6130124 ms
WRN311: The Cues entry for timecode 6156734 ms is listed after entry 6156776 ms
WRN311: The Cues entry for timecode 6180675 ms is listed after entry 6180716 ms
WRN311: The Cues entry for timecode 6188683 ms is listed after entry 6188724 ms
WRN311: The Cues entry for timecode 6198025 ms is listed after entry 6198109 ms
WRN311: The Cues entry for timecode 6210496 ms is listed after entry 6210538 ms
WRN311: The Cues entry for timecode 6223217 ms is listed after entry 6223300 ms
WRN311: The Cues entry for timecode 6235604 ms is listed after entry 6235646 ms
WRN311: The Cues entry for timecode 6277271 ms is listed after entry 6277354 ms
WRN311: The Cues entry for timecode 6287740 ms is listed after entry 6287782 ms
WRN311: The Cues entry for timecode 6391969 ms is listed after entry 6392052 ms
mkvalidator 0.5.0: the file appears to be valid
	file created with Lavf56.40.101 / Lavf56.40.101

real	6m25.683s
user	4m24.833s
sys	0m6.807s


Change History (38)

comment:1 by Hendrik, 9 years ago

Just for the record, while not ideal to mux Cues like that, the files are still valid within the Matroska specification, and not handling them properly is a bug in Kodi/XBMC (or whatever they use to read MKVs and handle chapter skip)

Last edited 9 years ago by Hendrik (previous) (diff)

comment:2 by gjdfgh, 9 years ago

Cc: nfxjfg@googlemail.com added

Can someone dump the complete output of "mkvinfo -v -v -v"? The file is a bit too big, and dropbox does no range requests.

in reply to:  2 comment:3 by Hendrik, 9 years ago

Replying to gjdfgh:

Can someone dump the complete output of "mkvinfo -v -v -v"? The file is a bit too big, and dropbox does no range requests.

https://drive.google.com/file/d/0Bzo8vvjNtaZ5bU1PRVJJTTdkbkU/view?usp=sharing

From a quick glance, its probably because of all the subtitle Cues, which XBMC should just ignore for generic seeking purposes (as seeking to subs is weird, want to seek to video).

Last edited 9 years ago by Hendrik (previous) (diff)

comment:4 by Drag0nFly, 9 years ago

It would be quite interesting to see how the files behave when the subtitle cues are muxed differently (though I'm not sure how big of a task that would be to correct)

I unfortunately have a large number of files with this issue (primarily sourced from my blu-ray collection), as I use ffmpeg for all my batch-encodes, so the issue is quite annoying.

btw.–I did perform a (partially successful) bisect of this issue with several Kodi/XBMC builds, as the FFmpeg base they use from June of 2014 works correctly with the same lavf-muxed files.

In any case, since the problem appears to be related to the subtitle handling I will do a test with the same material and remove the pgssubs to see if the issue still persists.

Last edited 9 years ago by Drag0nFly (previous) (diff)

comment:5 by Drag0nFly, 9 years ago

Did two new encodes (same time segment as the file provided earlier; one with subs & one without), and can confirm @heleppkes' suspicion that this is indeed caused by how FFmpeg muxes the pgssubs / generates the timecodes for the cue entries – which in turn trigger the behaviour seen in XBMC/Kodi (non-PGS file plays file, the identical segment with the PGS subs present does not)

$ time mkvalidator /data/video/work/hot.shots.sample.nosubs.fullq-crf17-slow-custom.mkv
mkvalidator 0.5.0: the file appears to be valid
	file created with Lavf56.40.101 / Lavf56.40.101

real	0m16.732s
user	0m0.507s
sys	0m0.879s

mkvinfo -v -v -v for subtitle-less file: https://www.dropbox.com/s/6ggvgiycmt3jvac/mkvinfo-vvv-nonpgs.txt?dl=0

Curiously, on the exact same segment which was re-encoded *with* the pgssubs, mkvalidator now produces several errors complaining about "ERR0B1: Block at <nnnnnnnnn> track #{4,5,6} is not a keyframe" – despite the fact that the complete file (with pgssubs) did not exhibit this problem. They have only a slight difference in lavf version (new file: Lavf56.40.101, original (complete) file: Lavf56.33.101)

mvalidator output:

time mkvalidator /data/video/work/hot.shots.sample.fullq-crf17-slow-custom.mkv
ERR0B1: Block at 20966410 track #4 is not a keyframe
ERR0B1: Block at 22986250 track #4 is not a keyframe
ERR0B1: Block at 289112993 track #4 is not a keyframe
ERR0B1: Block at 289138193 track #5 is not a keyframe
ERR0B1: Block at 289309495 track #6 is not a keyframe
ERR0B1: Block at 299074744 track #3 is not a keyframe
ERR0B1: Block at 304444643 track #5 is not a keyframe
ERR0B1: Block at 304580615 track #4 is not a keyframe
ERR0B1: Block at 304580656 track #6 is not a keyframe
ERR0B1: Block at 304717408 track #5 is not a keyframe
ERR0B1: Block at 308574199 track #4 is not a keyframe
ERR0B1: Block at 308855611 track #6 is not a keyframe
ERR0B1: Block at 311378374 track #5 is not a keyframe
ERR0B1: Block at 313846805 track #3 is not a keyframe
ERR0B1: Block at 314393404 track #3 is not a keyframe
ERR0B1: Block at 315245451 track #4 is not a keyframe
ERR0B1: Block at 315377012 track #6 is not a keyframe
ERR0B1: Block at 315516979 track #4 is not a keyframe
ERR0B1: Block at 315538523 track #5 is not a keyframe
ERR0B1: Block at 315831980 track #6 is not a keyframe
[...]
ERR0B1: Block at 1419913777 track #3 is not a keyframe
ERR0B1: Block at 1420190927 track #3 is not a keyframe
ERR0B1: Block at 1427398678 track #3 is not a keyframe
ERR0B1: Block at 1427656750 track #3 is not a keyframe
ERR0B1: Block at 1436945033 track #3 is not a keyframe
ERR0B1: Block at 1441343356 track #3 is not a keyframe
ERR0B1: Block at 1441348589 track #4 is not a keyframe
ERR0B1: Block at 1441353980 track #5 is not a keyframe
ERR0B1: Block at 1441358995 track #6 is not a keyframe
ERR0B1: Block at 1446091182 track #4 is not a keyframe
ERR0B1: Block at 1446091223 track #5 is not a keyframe
ERR0B1: Block at 1446091264 track #6 is not a keyframe
ERR0B1: Block at 1446296834 track #3 is not a keyframe
ERR0B1: Block at 1476849929 track #4 is not a keyframe
ERR0B1: Block at 1476854018 track #5 is not a keyframe
ERR0B1: Block at 1476865325 track #6 is not a keyframe
ERR0B1: Block at 1483435369 track #4 is not a keyframe
ERR0B1: Block at 1483435410 track #5 is not a keyframe
ERR0B1: Block at 1483435451 track #6 is not a keyframe
ERR0B1: Block at 1501733462 track #4 is not a keyframe
ERR0B1: Block at 1501750956 track #5 is not a keyframe
ERR0B1: Block at 1501770429 track #6 is not a keyframe
ERR0B1: Block at 1508509519 track #4 is not a keyframe
ERR0B1: Block at 1508509560 track #5 is not a keyframe
ERR0B1: Block at 1508509601 track #6 is not a keyframe
ERR0B1: Block at 1514199513 track #3 is not a keyframe
WRN311: The Cues entry for timecode 192693 ms is listed after entry 192776 ms
WRN311: The Cues entry for timecode 282866 ms is listed after entry 282908 ms
WRN311: The Cues entry for timecode 349099 ms is listed after entry 349140 ms
WRN311: The Cues entry for timecode 352394 ms is listed after entry 352477 ms
WRN311: The Cues entry for timecode 448448 ms is listed after entry 448531 ms
WRN311: The Cues entry for timecode 457874 ms is listed after entry 457916 ms
WRN311: The Cues entry for timecode 469803 ms is listed after entry 469844 ms
WRN311: The Cues entry for timecode 491574 ms is listed after entry 491616 ms
WRN311: The Cues entry for timecode 497831 ms is listed after entry 497914 ms
WRN311: The Cues entry for timecode 526693 ms is listed after entry 526776 ms
WRN311: The Cues entry for timecode 537078 ms is listed after entry 537162 ms
WRN311: The Cues entry for timecode 582123 ms is listed after entry 582207 ms
WRN311: The Cues entry for timecode 601684 ms is listed after entry 601768 ms
.       file created with Lavf56.40.101 / Lavf56.40.101

real	0m16.546s
user	0m1.111s
sys	0m0.780s

mkvinfo -v -v -v for above file: https://www.dropbox.com/s/2nrm8r7rpueme8t/mkvinfo-vvv-pgs.txt?dl=0

comment:6 by Cigaes, 9 years ago

I am not sure if this is relevant for this particular issue, but there is something else that may be causing problem: IIRC, the Matroska spec requires subtitles to have duration, and the file I can observe (hot.shots.sample.mkv), they do not. I may be wrong, but I seem to remember that this issue was reported as “is not a keyframe” by mkvalidator.

comment:7 by Drag0nFly, 9 years ago

Performed yet another test, this time re-muxing the recently-created, problematic file (with the "is not a keyframe" + "cues entry for timecode xxxxxx ms is listed after entry xxxxxx ms" errors using mkvtoolnix – /removing/ the tags for track 2, 3, 4 & 5 (the pgssubs), while keeping the subs themselves.

Subsequently running mkvalidator on the resulting muxed file eliminated both errors, _and_ fixed the issue with XBMC/Kodi playback as well.

ime mkvalidator /data/video/work/hot.shots.sample.fullq-crf17-slow-custom-tags-track-2-5-removed.mkv
WRN0D0: There are 5225 bytes of void data

mkvalidator 0.5.0: the file appears to be valid
	file created with libebml v1.3.1 + libmatroska v1.4.2 / mkvmerge v8.2.0 ('World of Adventure') 64bit

real	0m0.143s
user	0m0.078s
sys	0m0.061s

mkvinfo -v -v -v on the "tags removed" file: https://www.dropbox.com/s/er3pbnhv1kk6b42/mkvinfo-vvv-tags-track-2-5-removed.txt?dl=0

comment:8 by Drag0nFly, 9 years ago

And, naturally, simply removing the affected tags from the subtitle tracks using–

$ mkvpropedit -t track:s[1-4]: <file>.mkv

was not sufficient to eliminate the errors, thus requiring a complete remux. :/
If only FFmpeg would create these correctly (or not create them at all) in the first place, it's currently the best tool for batch-encodes (and a whole lot of other things, obviously;)

Last edited 9 years ago by Drag0nFly (previous) (diff)

comment:9 by gjdfgh, 9 years ago

I still don't know what's the actual problem here.

Is it the subtitle packet duration as Cigaes pointed out?

comment:10 by gjdfgh, 9 years ago

Also, no problems with vlc and mpv (builtin and libavformat demuxer).

comment:11 by Drag0nFly, 9 years ago

Not sure if the questions are addressed to me, as I am not a developer, but I'll attempt to answer as best I can.

I had the impression that the packet durations were embedded in the pgssubs themselves, but this does not seem to be the case. In the most recent clip I provided above, Mkvtoolnix removed the pgssubs entirely (not just the tags), which caused the file to play back without issues. So that was not a good example clip at all.

I have also tested these files with other players, including VLC/MPlayer, etc. – in addition to comparing the behaviour with other software doing x264/avc or x265/hevc re-encodes (such as Handbrake, which does not exhibit this problem), as well as re-muxing affected files with MakeMKV which corrects the issue (and produces no errors or warnings with mkvalidator.)

This leads me to conclude that there is clearly something suboptimal in the way FFmpeg muxes MKVs/generates these cue entries, as for the majority of my library which has been processed through FFmpeg (again; due to its excellent batch functionality and no-nonsense approach); mkvalidator reports warnings with the cue entries and, more often than not, 'block at nnn is not a keyframe' errors.

One can obviously argue that XBMC/Kodi is somwhat picky in not playing these files correctly, but the bottom line is that this would not occur had the FFmpeg muxer conformed to spec, like MakeMKV/Handbrake/MkvToolnix all do.

comment:12 by gjdfgh, 9 years ago

had the FFmpeg muxer conformed to spec,

Sorry but there's no spec. Maybe kodi devs should investigate exactly what caused this issue, and then we can decide whether ffmpeg did something wrong enough that it has to be fixed, or whether kodi should just fix their issue.

I had the impression that the packet durations were embedded in the pgssubs themselves,

That's true. Whether the container should have redundant duration is a different question. (At least mpv doesn't use the packet duration if it can get the duration from the subtitle decoder. And that's a necessity, because image subtitles rarely have a packet duration set.)

The CUE durations seem to be set though - this is what matters for seeking.

in reply to:  12 comment:13 by Drag0nFly, 9 years ago

Replying to gjdfgh:

had the FFmpeg muxer conformed to spec,

Sorry but there's no spec. Maybe kodi devs should investigate exactly what caused this issue, and then we can decide whether ffmpeg did something wrong enough that it has to be fixed, or whether kodi should just fix their issue.

So although mkvalidator reports issues only with FFmpeg-generated MKVs, this is somehow not related? I find that a little hard to believe.

From the Matroska foundation's homepage (http://www.matroska.org/downloads/mkvalidator.html)

mkvalidator is a simple command line tool to verify Matroska and WebM files for spec conformance. It checks the various bogus or missing key elements against the EBML DocType version of the file and reports the errors/warnings in the command line.

Also, if there is no spec, how can one design players to play back this material?

I think we are venturing a little outside of what the issue is here, as it should not be that difficult to make sure FFmpeg muxes the files correctly; if there is a willingness to do it that is.

comment:14 by Hendrik, 9 years ago

From your original mkvvalidator dump:

mkvalidator 0.5.0: the file appears to be valid

So even though it produces warnings, because something isn't ideal or perfect, the file is still perfectly within the "spec", and as such, any reader should be able to handle it, otherwise the reader isn't perfect either.

However, thats unrelated to if we should fix something in ffmpeg. If we can find something that should be done better, then we should do it, but that doesn't change the fact that kodi should also be able to handle these files as they are now.

comment:15 by gjdfgh, 9 years ago

I think we are venturing a little outside of what the issue is here, as it should not be that difficult to make sure FFmpeg muxes the files correctly; if there is a willingness to do it that is.

Sure. It's not like we want to refuse fixing bug, or even just producing "nicer" files. But we don't know the exact cause of this behavior yet.

So although mkvalidator reports issues only with FFmpeg-generated MKVs, this is somehow not related?

Even if it points out "invalid" things, mkvalidator can have bugs too, or not be updated to latest mkv de-facto standards. (The keyframe thing still seems strange - it might be a legitimate issue, but it doesn't seem to happen in your sample file.)

Also, if there is no spec, how can one design players to play back this material?

You try what works. Maybe this sounds cynical, but this is normal in multimedia.

comment:16 by Drag0nFly, 9 years ago

@heleppkes –I agree on both points. There are however several of my files which do not conform to this spec (existing or not) after being processed with FFmpeg, which was what I was referring to. But yes, the sample I provided with the cues issue did not have any errors generated from mkvalidator, only warnings.
I've processed pretty much all my material with FFmpeg (at this point over 100), which is why this becomes somewhat of a headache.

As I have mentioned before, a bug report was also created for this with the Kodi devs (almost three months ago). I did numerous bisects of their code, going back one year, which eventually indicated a change in their FFmpeg codebase. This is obviously not indicative of the issue lying there, but it was the only thing I had to go on in the absence of other input for the bug report.

@gjdfgh–

Yes, it becomes an issue of what is more pragmatic, should the symptom be corrected (which yes, the Kodi devs also should address), or the underlying issue (which would need to be identified)? Since I discovered further discrepancies between what the result was for other MKV-generating software and ffmpeg after the bug reports were created it appeared prudent to log this with you guys as well.

Obviously, mkvalidator is not bug-free but it is the only tool that I know of to check the integrity of such files. I know it was unmaintained for a long while, but the recent 0.5.0 version should be more up to date.

If there is other output that can be of interest that I can provide, do let me know. I'm obviously willing to test any patches for this as well, providing there is an idea of what triggers this behaviour.

comment:17 by Drag0nFly, 9 years ago

It case it is of interest for comparison purposes, I did a new encode with a recent HandBrake version for the same segment, and did a mkvinfo -v -v -v on the resulting file:

https://www.dropbox.com/s/ooszk0fg8qq8tzh/mkvinfo-vvv-handbrake-encode.txt?dl=0

It is also employing lavf (Lavf56.1.0), but does not have the issue with mkvalidator or Kodi.

$ time mkvalidator /data/video/work/hot.shots.sample.handbrake.mkv
WRN0E7: DisplayUnit seems to be pixels not aspect-ratio for Video track #1 1918px width from 1918
WRN0E7: DisplayUnit seems to be pixels not aspect-ratio for Video track #1 1040px height from 1040
mkvalidator 0.5.0: the file appears to be valid
	file created with Lavf56.1.0 / HandBrake 7401svn 2015081601

real	0m45.576s
user	0m0.513s
sys	0m0.848s

mkvinfo -v -v -v for a recent FFmpeg encode which produced the 'ERR0B1: Block at nnnnnnnnnn track #n is not a keyframe' error:
(in addition to the cue warning)

https://www.dropbox.com/s/4ft2id9p6csyvbn/mkvinfo-vvv-videodrome.txt?dl=0

comment:18 by Drag0nFly, 9 years ago

Last edited 9 years ago by Drag0nFly (previous) (diff)

comment:19 by Carl Eugen Hoyos, 9 years ago

Component: ffmpegavformat
Keywords: chapters regression added; muxer chapter removed
Priority: normalimportant

If there is an issue, it is a regression since 39442b1a1b22f32a1f43eaf7e67c7fedee43b601

comment:20 by gjdfgh, 9 years ago

I'd still like to hear from a kodi developer whether there is an actual problem or not.

If there is an issue, it is a regression since 39442b1a1b22f32a1f43eaf7e67c7fedee43b601

Looks harmless and correct.

comment:21 by Drag0nFly, 9 years ago

@gjdfgh–You can also add MakeMKV developers to that list, as every single file muxed with FFmpeg which contain a DTS track produces the following errors:

Saving 1 titles into directory /data/video/work/
AV synchronization issues were found in file '/data/video/work//The_Terminator_t00.mkv' (title #1)
AV sync issue in stream 1 at 0:00:00.052 with duration of 1.333ms : broken timecode, apparent audio skew is -1.333ms
AV sync issue in stream 1 at 0:00:02.091 with duration of 1ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.143 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.187 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.239 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.283 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.335 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.379 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.431 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.475 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.527 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.571 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.623 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.667 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.719 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.763 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.815 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.859 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:02.911 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:02.955 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:03.007 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:03.051 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:03.103 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.099 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.151 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.195 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.247 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.291 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.343 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.387 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.439 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.483 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.535 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.579 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.631 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.675 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.727 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.771 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.823 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.867 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:05.919 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:05.963 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.015 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.059 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.079 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.091 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.143 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.187 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.239 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.283 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.335 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.379 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.431 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.475 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.527 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.571 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.623 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.667 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.719 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.763 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.815 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.859 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:06.911 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:06.955 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:07.007 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:07.051 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:07.103 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.099 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.151 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.195 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.247 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.291 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.343 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.387 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.439 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.483 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.535 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.579 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.631 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.675 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.727 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.771 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.823 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.867 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:13.919 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:13.963 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:14.015 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:14.059 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:14.111 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.107 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:16.159 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.203 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:16.255 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.299 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:16.351 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.395 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:16.447 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.491 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
AV sync issue in stream 1 at 0:00:16.543 with duration of 0.666ms : broken timecode, apparent audio skew is -1ms
AV sync issue in stream 1 at 0:00:16.587 with duration of 0.666ms : broken timecode, apparent audio skew is +0.333ms
Too many AV synchronization issues in file '/data/video/work//The_Terminator_t00.mkv' (title #1) , future messages will be printed only to log file
1 titles saved

I'm really glad I referenced Kodi in the title of this bug.

comment:22 by Carl Eugen Hoyos, 9 years ago

Did you already test that reverting mentioned commit fixes your (original) issue?

comment:23 by Drag0nFly, 9 years ago

No, I was unfortunately not able to revert the commit as it produces the following error on both test systems (and I am not well-versed enough with git to work around it)–

git revert 39442b1a1b22f32a1f43eaf7e67c7fedee43b601
error: could not revert 39442b1... matroskaenc: Add CuePoints for subtitle tracks
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

I would need to do an encode to be able to determine if it had an impact. I doubt it fixes the issue, as re-muxing without subs (with mkvtoolnix) still leaves the issue unchanged (but with one less warning from mkvalidator). That is, unless FFMpeg inherently alters something else when one or more sub streams are initially present.

comment:24 by Drag0nFly, 9 years ago

I believe this is due to a prior merge conflict, as the section looks like the following and not what is referenced at http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=39442b1a1b22f32a1f43eaf7e67c7fedee43b601 for libavformat/matroskaenc.c:

        if (s->pb->seekable && (codec->codec_type == AVMEDIA_TYPE_VIDEO && keyframe || add_cue)) {
            ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, dash_tracknum, ts, mkv->cluster_pos, relative_packet_pos, -1);
            if (ret < 0) return ret;
        }

I can try to manually revert the matroskaenc.c change (but leaving version.h unchanged) and let you know how it goes.

comment:25 by Carl Eugen Hoyos, 9 years ago

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index 1325c3f..e4d75ef 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -1857,7 +1857,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_
         end_ebml_master(pb, blockgroup);
     }

-    if (s->pb->seekable) {
+    if (0&&s->pb->seekable) {
         ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, dash_tracknum, ts,
                                mkv->cluster_pos, relative_packet_pos, duration);
         if (ret < 0)

comment:26 by Drag0nFly, 9 years ago

@cehoyos–thanks for the patch. I've performed a few tests, and there is noticeable improvement.

Test #1; remuxing:

$ time mkvalidator /data/video/work/delete/remux-test.mkv

mkvalidator 0.5.0: the file appears to be valid...............................

file created with Lavf56.40.101 / Lavf56.40.101

real 2m13.683s
user 0m5.963s
sys 0m0.990s

No errors introduced. Playback tested with Kodi, and chapters do not repeat.

Test #2:

Audio re-encode+mux:

$ time mkvalidator /data/video/work/delete/volnorm+mux.mkv

mkvalidator 0.5.0: the file appears to be valid...............................

file created with Lavf56.40.101 / Lavf56.40.101

real 1m0.539s
user 0m6.188s
sys 0m2.430s

Test #3: re-encode of problematic segment:

Curiously, this throws repeated 'is not a keyframe' errors but the resulting file does not have the issue with the cue/timestamps (or the playback issues), as the file plays fine w/o repeating chapters.

$ time mkvalidator /data/video/work/hot.shots.sample.fullq-crf17-slow-custom.mkv
ERR0B1: Block at 20972936 track #4 is not a keyframe
ERR0B1: Block at 22992776 track #4 is not a keyframe
ERR0B1: Block at 289127174 track #4 is not a keyframe
ERR0B1: Block at 289152374 track #5 is not a keyframe
ERR0B1: Block at 289323676 track #6 is not a keyframe
ERR0B1: Block at 299088925 track #3 is not a keyframe
ERR0B1: Block at 304458824 track #5 is not a keyframe
ERR0B1: Block at 304594796 track #4 is not a keyframe
ERR0B1: Block at 304594837 track #6 is not a keyframe
ERR0B1: Block at 304731589 track #5 is not a keyframe
ERR0B1: Block at 308588380 track #4 is not a keyframe
ERR0B1: Block at 308869792 track #6 is not a keyframe
ERR0B1: Block at 311392555 track #5 is not a keyframe
ERR0B1: Block at 313860986 track #3 is not a keyframe
ERR0B1: Block at 314407585 track #3 is not a keyframe
ERR0B1: Block at 315259632 track #4 is not a keyframe
ERR0B1: Block at 315391193 track #6 is not a keyframe
ERR0B1: Block at 315531160 track #4 is not a keyframe
ERR0B1: Block at 315552704 track #5 is not a keyframe
ERR0B1: Block at 315846161 track #6 is not a keyframe
ERR0B1: Block at 321766632 track #3 is not a keyframe
ERR0B1: Block at 322885059 track #4 is not a keyframe
ERR0B1: Block at 322885100 track #5 is not a keyframe
ERR0B1: Block at 323006412 track #6 is not a keyframe
ERR0B1: Block at 325021145 track #3 is not a keyframe
ERR0B1: Block at 328260185 track #3 is not a keyframe
ERR0B1: Block at 340731533 track #5 is not a keyframe
ERR0B1: Block at 340908078 track #3 is not a keyframe
ERR0B1: Block at 340930893 track #4 is not a keyframe
ERR0B1: Block at 340944479 track #6 is not a keyframe
ERR0B1: Block at 348071176 track #3 is not a keyframe
ERR0B1: Block at 349502214 track #4 is not a keyframe
ERR0B1: Block at 349502255 track #5 is not a keyframe
ERR0B1: Block at 349748686 track #6 is not a keyframe
ERR0B1: Block at 352312464 track #3 is not a keyframe
ERR0B1: Block at 358466114 track #3 is not a keyframe
ERR0B1: Block at 359957988 track #3 is not a keyframe
ERR0B1: Block at 359972208 track #4 is not a keyframe
ERR0B1: Block at 359986810 track #5 is not a keyframe
ERR0B1: Block at 360108131 track #6 is not a keyframe
ERR0B1: Block at 365128340 track #3 is not a keyframe
ERR0B1: Block at 365577272 track #4 is not a keyframe
ERR0B1: Block at 365577313 track #5 is not a keyframe
ERR0B1: Block at 365650809 track #6 is not a keyframe
ERR0B1: Block at 365753895 track #5 is not a keyframe
ERR0B1: Block at 365857670 track #3 is not a keyframe
ERR0B1: Block at 365884935 track #4 is not a keyframe
ERR0B1: Block at 365912361 track #6 is not a keyframe
ERR0B1: Block at 370950712 track #3 is not a keyframe
ERR0B1: Block at 371805515 track #4 is not a keyframe
ERR0B1: Block at 371805556 track #5 is not a keyframe
ERR0B1: Block at 372096441 track #6 is not a keyframe
ERR0B1: Block at 372412689 track #5 is not a keyframe
ERR0B1: Block at 372578071 track #3 is not a keyframe
ERR0B1: Block at 372605365 track #4 is not a keyframe
ERR0B1: Block at 372753595 track #6 is not a keyframe
ERR0B1: Block at 380089360 track #3 is not a keyframe
ERR0B1: Block at 381757864 track #4 is not a keyframe
ERR0B1: Block at 381757905 track #5 is not a keyframe
ERR0B1: Block at 381921218 track #6 is not a keyframe
ERR0B1: Block at 382071955 track #4 is not a keyframe
ERR0B1: Block at 382087655 track #5 is not a keyframe
ERR0B1: Block at 382256441 track #3 is not a keyframe
ERR0B1: Block at 382275054 track #6 is not a keyframe
ERR0B1: Block at 386697698 track #3 is not a keyframe
ERR0B1: Block at 390721874 track #4 is not a keyframe
ERR0B1: Block at 390721915 track #5 is not a keyframe
ERR0B1: Block at 390873762 track #6 is not a keyframe
ERR0B1: Block at 390964280 track #4 is not a keyframe
ERR0B1: Block at 390972149 track #5 is not a keyframe
ERR0B1: Block at 391109825 track #3 is not a keyframe
ERR0B1: Block at 391117440 track #6 is not a keyframe
ERR0B1: Block at 396461570 track #3 is not a keyframe
ERR0B1: Block at 397541964 track #5 is not a keyframe
ERR0B1: Block at 397644714 track #4 is not a keyframe
ERR0B1: Block at 397644755 track #6 is not a keyframe
ERR0B1: Block at 402538634 track #4 is not a keyframe
ERR0B1: Block at 402577706 track #5 is not a keyframe
ERR0B1: Block at 402733543 track #3 is not a keyframe
ERR0B1: Block at 402877949 track #6 is not a keyframe
ERR0B1: Block at 412627985 track #3 is not a keyframe
ERR0B1: Block at 415268775 track #5 is not a keyframe
ERR0B1: Block at 415368367 track #4 is not a keyframe
ERR0B1: Block at 415463173 track #6 is not a keyframe
ERR0B1: Block at 416220502 track #3 is not a keyframe
ERR0B1: Block at 420588754 track #3 is not a keyframe
ERR0B1: Block at 424039589 track #3 is not a keyframe
ERR0B1: Block at 424088508 track #4 is not a keyframe
ERR0B1: Block at 424128721 track #5 is not a keyframe
ERR0B1: Block at 424321871 track #6 is not a keyframe
ERR0B1: Block at 435115964 track #3 is not a keyframe
ERR0B1: Block at 440398432 track #4 is not a keyframe
ERR0B1: Block at 440398473 track #5 is not a keyframe
ERR0B1: Block at 440696176 track #6 is not a keyframe
ERR0B1: Block at 445068233 track #3 is not a keyframe
ERR0B1: Block at 445096247 track #4 is not a keyframe
ERR0B1: Block at 445117991 track #5 is not a keyframe
ERR0B1: Block at 445461906 track #6 is not a keyframe
ERR0B1: Block at 453984356 track #3 is not a keyframe
ERR0B1: Block at 453984397 track #5 is not a keyframe
ERR0B1: Block at 454065346 track #4 is not a keyframe
ERR0B1: Block at 454065387 track #6 is not a keyframe
ERR0B1: Block at 456834381 track #5 is not a keyframe
ERR0B1: Block at 456973205 track #3 is not a keyframe
ERR0B1: Block at 457000580 track #4 is not a keyframe
ERR0B1: Block at 457027182 track #6 is not a keyframe
ERR0B1: Block at 468592247 track #4 is not a keyframe
ERR0B1: Block at 468592288 track #5 is not a keyframe
ERR0B1: Block at 468700931 track #3 is not a keyframe
ERR0B1: Block at 468797787 track #6 is not a keyframe
ERR0B1: Block at 469011344 track #4 is not a keyframe
ERR0B1: Block at 469031433 track #5 is not a keyframe
ERR0B1: Block at 469161178 track #3 is not a keyframe
ERR0B1: Block at 469291340 track #6 is not a keyframe
ERR0B1: Block at 475223407 track #5 is not a keyframe
ERR0B1: Block at 475386715 track #3 is not a keyframe
ERR0B1: Block at 475386756 track #4 is not a keyframe
ERR0B1: Block at 475386797 track #6 is not a keyframe
ERR0B1: Block at 480414120 track #4 is not a keyframe
ERR0B1: Block at 480422468 track #5 is not a keyframe
ERR0B1: Block at 480549181 track #3 is not a keyframe
ERR0B1: Block at 480557766 track #6 is not a keyframe
ERR0B1: Block at 486063873 track #3 is not a keyframe
ERR0B1: Block at 486558289 track #5 is not a keyframe
ERR0B1: Block at 486674468 track #4 is not a keyframe
ERR0B1: Block at 486771045 track #6 is not a keyframe
ERR0B1: Block at 487631695 track #3 is not a keyframe
ERR0B1: Block at 487648761 track #4 is not a keyframe
ERR0B1: Block at 487671226 track #5 is not a keyframe
ERR0B1: Block at 487803283 track #6 is not a keyframe
ERR0B1: Block at 493019298 track #4 is not a keyframe
ERR0B1: Block at 493019339 track #5 is not a keyframe
ERR0B1: Block at 493143316 track #3 is not a keyframe
ERR0B1: Block at 493143357 track #6 is not a keyframe
ERR0B1: Block at 500829599 track #4 is not a keyframe
ERR0B1: Block at 500852402 track #5 is not a keyframe
ERR0B1: Block at 501020895 track #3 is not a keyframe
ERR0B1: Block at 501169108 track #6 is not a keyframe
ERR0B1: Block at 508924885 track #4 is not a keyframe
ERR0B1: Block at 509154220 track #4 is not a keyframe
ERR0B1: Block at 509166867 track #6 is not a keyframe
ERR0B1: Block at 509547274 track #6 is not a keyframe
ERR0B1: Block at 510091370 track #5 is not a keyframe
ERR0B1: Block at 510354969 track #5 is not a keyframe
ERR0B1: Block at 513504947 track #4 is not a keyframe
ERR0B1: Block at 513504988 track #5 is not a keyframe
ERR0B1: Block at 513638422 track #6 is not a keyframe
ERR0B1: Block at 513766141 track #3 is not a keyframe
ERR0B1: Block at 519046544 track #3 is not a keyframe
ERR0B1: Block at 519070749 track #4 is not a keyframe
ERR0B1: Block at 519091718 track #5 is not a keyframe
ERR0B1: Block at 519425114 track #6 is not a keyframe
ERR0B1: Block at 528394231 track #4 is not a keyframe
ERR0B1: Block at 528394272 track #5 is not a keyframe
ERR0B1: Block at 528491730 track #3 is not a keyframe
ERR0B1: Block at 528491771 track #6 is not a keyframe
ERR0B1: Block at 530120623 track #5 is not a keyframe
ERR0B1: Block at 530221602 track #3 is not a keyframe
ERR0B1: Block at 530234692 track #4 is not a keyframe
ERR0B1: Block at 530245348 track #6 is not a keyframe
ERR0B1: Block at 535360487 track #4 is not a keyframe
ERR0B1: Block at 535360528 track #5 is not a keyframe
ERR0B1: Block at 535431943 track #3 is not a keyframe
ERR0B1: Block at 535570953 track #6 is not a keyframe
ERR0B1: Block at 536721480 track #3 is not a keyframe
ERR0B1: Block at 536747802 track #4 is not a keyframe
ERR0B1: Block at 536769628 track #5 is not a keyframe
ERR0B1: Block at 536876098 track #6 is not a keyframe
ERR0B1: Block at 545814377 track #3 is not a keyframe
ERR0B1: Block at 545814418 track #4 is not a keyframe
ERR0B1: Block at 545814459 track #5 is not a keyframe
ERR0B1: Block at 545960503 track #6 is not a keyframe
ERR0B1: Block at 546112201 track #4 is not a keyframe
ERR0B1: Block at 546130786 track #5 is not a keyframe
ERR0B1: Block at 546296135 track #3 is not a keyframe
ERR0B1: Block at 546480542 track #6 is not a keyframe
ERR0B1: Block at 555937626 track #4 is not a keyframe
ERR0B1: Block at 556052235 track #3 is not a keyframe
ERR0B1: Block at 556052276 track #5 is not a keyframe
ERR0B1: Block at 556183231 track #4 is not a keyframe
ERR0B1: Block at 556191762 track #6 is not a keyframe
ERR0B1: Block at 556323803 track #5 is not a keyframe
ERR0B1: Block at 556467440 track #3 is not a keyframe
ERR0B1: Block at 556621436 track #6 is not a keyframe
ERR0B1: Block at 564205453 track #3 is not a keyframe
ERR0B1: Block at 564205494 track #4 is not a keyframe
ERR0B1: Block at 564205535 track #5 is not a keyframe
ERR0B1: Block at 564345491 track #6 is not a keyframe
ERR0B1: Block at 564474261 track #3 is not a keyframe
ERR0B1: Block at 564493426 track #4 is not a keyframe
ERR0B1: Block at 564513214 track #5 is not a keyframe
ERR0B1: Block at 564676006 track #6 is not a keyframe
ERR0B1: Block at 572877311 track #3 is not a keyframe
ERR0B1: Block at 572877352 track #4 is not a keyframe
ERR0B1: Block at 572877393 track #5 is not a keyframe
ERR0B1: Block at 573170649 track #3 is not a keyframe
ERR0B1: Block at 573184210 track #5 is not a keyframe
ERR0B1: Block at 573194205 track #6 is not a keyframe
ERR0B1: Block at 574289689 track #4 is not a keyframe
ERR0B1: Block at 574418265 track #6 is not a keyframe
ERR0B1: Block at 578120157 track #5 is not a keyframe
ERR0B1: Block at 578258664 track #3 is not a keyframe
ERR0B1: Block at 580653269 track #3 is not a keyframe
ERR0B1: Block at 580948984 track #4 is not a keyframe
ERR0B1: Block at 581216627 track #6 is not a keyframe
ERR0B1: Block at 587701137 track #3 is not a keyframe
ERR0B1: Block at 588002590 track #3 is not a keyframe
ERR0B1: Block at 588765828 track #4 is not a keyframe
ERR0B1: Block at 588775940 track #5 is not a keyframe
ERR0B1: Block at 588944780 track #6 is not a keyframe
ERR0B1: Block at 596295974 track #3 is not a keyframe
ERR0B1: Block at 596668842 track #3 is not a keyframe
ERR0B1: Block at 596821710 track #4 is not a keyframe
ERR0B1: Block at 596821751 track #5 is not a keyframe
ERR0B1: Block at 596948958 track #6 is not a keyframe
ERR0B1: Block at 597070830 track #4 is not a keyframe
ERR0B1: Block at 597086461 track #5 is not a keyframe
ERR0B1: Block at 597358826 track #6 is not a keyframe
ERR0B1: Block at 606026742 track #3 is not a keyframe
ERR0B1: Block at 606543801 track #4 is not a keyframe
ERR0B1: Block at 606678449 track #5 is not a keyframe
ERR0B1: Block at 606898228 track #6 is not a keyframe
ERR0B1: Block at 608045132 track #3 is not a keyframe
ERR0B1: Block at 609195140 track #5 is not a keyframe
ERR0B1: Block at 614255001 track #3 is not a keyframe
ERR0B1: Block at 614768128 track #3 is not a keyframe
ERR0B1: Block at 615202956 track #5 is not a keyframe
ERR0B1: Block at 626619507 track #3 is not a keyframe
ERR0B1: Block at 634027456 track #3 is not a keyframe
ERR0B1: Block at 634046164 track #4 is not a keyframe
ERR0B1: Block at 634064101 track #5 is not a keyframe
ERR0B1: Block at 634190025 track #6 is not a keyframe
ERR0B1: Block at 638421352 track #4 is not a keyframe
ERR0B1: Block at 638525417 track #5 is not a keyframe
ERR0B1: Block at 638701804 track #5 is not a keyframe
ERR0B1: Block at 638711981 track #6 is not a keyframe
ERR0B1: Block at 639099964 track #3 is not a keyframe
ERR0B1: Block at 639298465 track #4 is not a keyframe
ERR0B1: Block at 639384269 track #3 is not a keyframe
ERR0B1: Block at 639472894 track #6 is not a keyframe
ERR0B1: Block at 642963010 track #4 is not a keyframe
ERR0B1: Block at 642963051 track #5 is not a keyframe
ERR0B1: Block at 643156986 track #6 is not a keyframe
ERR0B1: Block at 643592163 track #3 is not a keyframe
ERR0B1: Block at 670228412 track #4 is not a keyframe
ERR0B1: Block at 670258788 track #5 is not a keyframe
ERR0B1: Block at 670422198 track #6 is not a keyframe
ERR0B1: Block at 673480797 track #3 is not a keyframe
ERR0B1: Block at 675776317 track #4 is not a keyframe
ERR0B1: Block at 675776358 track #5 is not a keyframe
ERR0B1: Block at 676224504 track #6 is not a keyframe
ERR0B1: Block at 679680532 track #3 is not a keyframe
ERR0B1: Block at 689178295 track #3 is not a keyframe
ERR0B1: Block at 689202090 track #4 is not a keyframe
ERR0B1: Block at 689216081 track #5 is not a keyframe
ERR0B1: Block at 689497978 track #6 is not a keyframe
ERR0B1: Block at 694667585 track #3 is not a keyframe
ERR0B1: Block at 694993798 track #4 is not a keyframe
ERR0B1: Block at 694993839 track #5 is not a keyframe
ERR0B1: Block at 694993880 track #6 is not a keyframe
ERR0B1: Block at 695832331 track #3 is not a keyframe
ERR0B1: Block at 699012334 track #3 is not a keyframe
ERR0B1: Block at 701460026 track #5 is not a keyframe
ERR0B1: Block at 701589083 track #4 is not a keyframe
ERR0B1: Block at 701599738 track #6 is not a keyframe
ERR0B1: Block at 710006841 track #4 is not a keyframe
ERR0B1: Block at 710006882 track #5 is not a keyframe
ERR0B1: Block at 710116785 track #6 is not a keyframe
ERR0B1: Block at 781774739 track #3 is not a keyframe
ERR0B1: Block at 784654637 track #3 is not a keyframe
ERR0B1: Block at 785955310 track #3 is not a keyframe
ERR0B1: Block at 788800297 track #3 is not a keyframe
ERR0B1: Block at 801154501 track #3 is not a keyframe
ERR0B1: Block at 808111728 track #3 is not a keyframe
ERR0B1: Block at 824724120 track #3 is not a keyframe
ERR0B1: Block at 825064714 track #5 is not a keyframe
ERR0B1: Block at 825158000 track #4 is not a keyframe
ERR0B1: Block at 825169365 track #6 is not a keyframe
ERR0B1: Block at 829767551 track #3 is not a keyframe
ERR0B1: Block at 829767592 track #4 is not a keyframe
ERR0B1: Block at 829767633 track #5 is not a keyframe
ERR0B1: Block at 830019560 track #6 is not a keyframe
ERR0B1: Block at 830547190 track #3 is not a keyframe
ERR0B1: Block at 830631962 track #4 is not a keyframe
ERR0B1: Block at 830642943 track #5 is not a keyframe
ERR0B1: Block at 830784327 track #6 is not a keyframe
ERR0B1: Block at 834669454 track #3 is not a keyframe
ERR0B1: Block at 834852005 track #3 is not a keyframe
ERR0B1: Block at 835006912 track #4 is not a keyframe
ERR0B1: Block at 835006953 track #5 is not a keyframe
ERR0B1: Block at 835077329 track #6 is not a keyframe
ERR0B1: Block at 835213439 track #4 is not a keyframe
ERR0B1: Block at 835230972 track #5 is not a keyframe
ERR0B1: Block at 835407703 track #6 is not a keyframe
ERR0B1: Block at 839093839 track #3 is not a keyframe
ERR0B1: Block at 840679473 track #4 is not a keyframe
ERR0B1: Block at 840679514 track #5 is not a keyframe
ERR0B1: Block at 840766973 track #6 is not a keyframe
ERR0B1: Block at 840862127 track #4 is not a keyframe
ERR0B1: Block at 840888524 track #5 is not a keyframe
ERR0B1: Block at 841003632 track #3 is not a keyframe
ERR0B1: Block at 841028848 track #6 is not a keyframe
ERR0B1: Block at 846480734 track #3 is not a keyframe
ERR0B1: Block at 848364918 track #4 is not a keyframe
ERR0B1: Block at 848364959 track #5 is not a keyframe
ERR0B1: Block at 848483749 track #6 is not a keyframe
ERR0B1: Block at 853056523 track #5 is not a keyframe
ERR0B1: Block at 853151145 track #3 is not a keyframe
ERR0B1: Block at 853159723 track #4 is not a keyframe
ERR0B1: Block at 853284819 track #6 is not a keyframe
ERR0B1: Block at 857012005 track #3 is not a keyframe
ERR0B1: Block at 857264937 track #3 is not a keyframe
ERR0B1: Block at 857519970 track #4 is not a keyframe
ERR0B1: Block at 857520011 track #5 is not a keyframe
ERR0B1: Block at 857596517 track #6 is not a keyframe
ERR0B1: Block at 857710518 track #4 is not a keyframe
ERR0B1: Block at 857729090 track #5 is not a keyframe
ERR0B1: Block at 857906584 track #6 is not a keyframe
ERR0B1: Block at 861679815 track #3 is not a keyframe
ERR0B1: Block at 861952703 track #3 is not a keyframe
ERR0B1: Block at 862123160 track #4 is not a keyframe
ERR0B1: Block at 862123201 track #5 is not a keyframe
ERR0B1: Block at 862195502 track #6 is not a keyframe
ERR0B1: Block at 862281479 track #4 is not a keyframe
ERR0B1: Block at 862297116 track #5 is not a keyframe
ERR0B1: Block at 862421671 track #6 is not a keyframe
ERR0B1: Block at 864706790 track #3 is not a keyframe
ERR0B1: Block at 868006997 track #5 is not a keyframe
ERR0B1: Block at 868092325 track #4 is not a keyframe
ERR0B1: Block at 868092366 track #6 is not a keyframe
ERR0B1: Block at 869969401 track #3 is not a keyframe
ERR0B1: Block at 870007036 track #4 is not a keyframe
ERR0B1: Block at 870044446 track #5 is not a keyframe
ERR0B1: Block at 870181129 track #6 is not a keyframe
ERR0B1: Block at 875658810 track #3 is not a keyframe
ERR0B1: Block at 880485107 track #4 is not a keyframe
ERR0B1: Block at 880485148 track #5 is not a keyframe
ERR0B1: Block at 880688572 track #6 is not a keyframe
ERR0B1: Block at 883309136 track #3 is not a keyframe
ERR0B1: Block at 883320066 track #4 is not a keyframe
ERR0B1: Block at 883333658 track #5 is not a keyframe
ERR0B1: Block at 883431248 track #6 is not a keyframe
ERR0B1: Block at 886081634 track #3 is not a keyframe
ERR0B1: Block at 886081675 track #4 is not a keyframe
ERR0B1: Block at 886081716 track #5 is not a keyframe
ERR0B1: Block at 886359109 track #6 is not a keyframe
ERR0B1: Block at 923906669 track #3 is not a keyframe
ERR0B1: Block at 924254935 track #5 is not a keyframe
ERR0B1: Block at 924383110 track #4 is not a keyframe
ERR0B1: Block at 924394728 track #6 is not a keyframe
ERR0B1: Block at 928124034 track #3 is not a keyframe
ERR0B1: Block at 930006718 track #4 is not a keyframe
ERR0B1: Block at 930006759 track #5 is not a keyframe
ERR0B1: Block at 930242322 track #6 is not a keyframe
ERR0B1: Block at 947436756 track #3 is not a keyframe
ERR0B1: Block at 947775005 track #4 is not a keyframe
ERR0B1: Block at 947798745 track #5 is not a keyframe
ERR0B1: Block at 948051270 track #6 is not a keyframe
ERR0B1: Block at 950643601 track #3 is not a keyframe
ERR0B1: Block at 953483789 track #3 is not a keyframe
ERR0B1: Block at 953626678 track #4 is not a keyframe
ERR0B1: Block at 953626719 track #5 is not a keyframe
ERR0B1: Block at 953730119 track #6 is not a keyframe
ERR0B1: Block at 953831018 track #4 is not a keyframe
ERR0B1: Block at 953849957 track #5 is not a keyframe
ERR0B1: Block at 954085908 track #6 is not a keyframe
ERR0B1: Block at 961845136 track #3 is not a keyframe
ERR0B1: Block at 962188565 track #5 is not a keyframe
ERR0B1: Block at 962299481 track #4 is not a keyframe
ERR0B1: Block at 962299522 track #6 is not a keyframe
ERR0B1: Block at 964644542 track #3 is not a keyframe
ERR0B1: Block at 965197016 track #5 is not a keyframe
ERR0B1: Block at 965354763 track #4 is not a keyframe
ERR0B1: Block at 965383992 track #6 is not a keyframe
ERR0B1: Block at 973714672 track #3 is not a keyframe
ERR0B1: Block at 974119995 track #4 is not a keyframe
ERR0B1: Block at 974120036 track #5 is not a keyframe
ERR0B1: Block at 974248456 track #6 is not a keyframe
ERR0B1: Block at 998500953 track #3 is not a keyframe
ERR0B1: Block at 1001717554 track #3 is not a keyframe
ERR0B1: Block at 1012742022 track #5 is not a keyframe
ERR0B1: Block at 1012889706 track #4 is not a keyframe
ERR0B1: Block at 1012927115 track #6 is not a keyframe
ERR0B1: Block at 1013189498 track #3 is not a keyframe
ERR0B1: Block at 1021142158 track #3 is not a keyframe
ERR0B1: Block at 1021142199 track #4 is not a keyframe
ERR0B1: Block at 1021142240 track #5 is not a keyframe
ERR0B1: Block at 1021268155 track #6 is not a keyframe
ERR0B1: Block at 1021391176 track #3 is not a keyframe
ERR0B1: Block at 1021429720 track #4 is not a keyframe
ERR0B1: Block at 1021466069 track #5 is not a keyframe
ERR0B1: Block at 1021614765 track #6 is not a keyframe
ERR0B1: Block at 1029318471 track #3 is not a keyframe
ERR0B1: Block at 1029502552 track #3 is not a keyframe
ERR0B1: Block at 1029806399 track #4 is not a keyframe
ERR0B1: Block at 1029806440 track #5 is not a keyframe
ERR0B1: Block at 1029895482 track #6 is not a keyframe
ERR0B1: Block at 1029985060 track #4 is not a keyframe
ERR0B1: Block at 1030010565 track #5 is not a keyframe
ERR0B1: Block at 1030237546 track #6 is not a keyframe
ERR0B1: Block at 1034501932 track #3 is not a keyframe
ERR0B1: Block at 1037319834 track #5 is not a keyframe
ERR0B1: Block at 1037435408 track #4 is not a keyframe
ERR0B1: Block at 1037435449 track #6 is not a keyframe
ERR0B1: Block at 1041603299 track #3 is not a keyframe
ERR0B1: Block at 1042142931 track #4 is not a keyframe
ERR0B1: Block at 1042180275 track #5 is not a keyframe
ERR0B1: Block at 1042341627 track #6 is not a keyframe
ERR0B1: Block at 1055096597 track #3 is not a keyframe
ERR0B1: Block at 1056402953 track #4 is not a keyframe
ERR0B1: Block at 1056402994 track #5 is not a keyframe
ERR0B1: Block at 1056514051 track #6 is not a keyframe
ERR0B1: Block at 1066968134 track #3 is not a keyframe
ERR0B1: Block at 1067949981 track #4 is not a keyframe
ERR0B1: Block at 1067970302 track #5 is not a keyframe
ERR0B1: Block at 1068211166 track #6 is not a keyframe
ERR0B1: Block at 1071279023 track #3 is not a keyframe
ERR0B1: Block at 1072903733 track #3 is not a keyframe
ERR0B1: Block at 1073571821 track #4 is not a keyframe
ERR0B1: Block at 1073571862 track #5 is not a keyframe
ERR0B1: Block at 1073702471 track #6 is not a keyframe
ERR0B1: Block at 1073814353 track #4 is not a keyframe
ERR0B1: Block at 1073825948 track #5 is not a keyframe
ERR0B1: Block at 1074058483 track #6 is not a keyframe
ERR0B1: Block at 1076731166 track #3 is not a keyframe
ERR0B1: Block at 1079744355 track #4 is not a keyframe
ERR0B1: Block at 1079744396 track #5 is not a keyframe
ERR0B1: Block at 1079853421 track #6 is not a keyframe
ERR0B1: Block at 1089128896 track #3 is not a keyframe
ERR0B1: Block at 1089951872 track #4 is not a keyframe
ERR0B1: Block at 1089959765 track #5 is not a keyframe
ERR0B1: Block at 1090091818 track #6 is not a keyframe
ERR0B1: Block at 1092621132 track #3 is not a keyframe
ERR0B1: Block at 1095863865 track #5 is not a keyframe
ERR0B1: Block at 1095977113 track #4 is not a keyframe
ERR0B1: Block at 1096074909 track #6 is not a keyframe
ERR0B1: Block at 1098095078 track #3 is not a keyframe
ERR0B1: Block at 1100910401 track #3 is not a keyframe
ERR0B1: Block at 1104709137 track #3 is not a keyframe
ERR0B1: Block at 1109821694 track #3 is not a keyframe
ERR0B1: Block at 1111060815 track #4 is not a keyframe
ERR0B1: Block at 1111074488 track #5 is not a keyframe
ERR0B1: Block at 1111175409 track #6 is not a keyframe
ERR0B1: Block at 1117014803 track #5 is not a keyframe
ERR0B1: Block at 1117119904 track #4 is not a keyframe
ERR0B1: Block at 1117212446 track #6 is not a keyframe
ERR0B1: Block at 1120054160 track #4 is not a keyframe
ERR0B1: Block at 1120090895 track #5 is not a keyframe
ERR0B1: Block at 1120237104 track #6 is not a keyframe
ERR0B1: Block at 1130404202 track #5 is not a keyframe
ERR0B1: Block at 1130494592 track #4 is not a keyframe
ERR0B1: Block at 1130494633 track #6 is not a keyframe
ERR0B1: Block at 1137508902 track #4 is not a keyframe
ERR0B1: Block at 1137527185 track #5 is not a keyframe
ERR0B1: Block at 1137659719 track #6 is not a keyframe
ERR0B1: Block at 1143795289 track #4 is not a keyframe
ERR0B1: Block at 1143795330 track #5 is not a keyframe
ERR0B1: Block at 1143892103 track #6 is not a keyframe
ERR0B1: Block at 1148650626 track #4 is not a keyframe
ERR0B1: Block at 1148675213 track #5 is not a keyframe
ERR0B1: Block at 1148905030 track #6 is not a keyframe
ERR0B1: Block at 1157257702 track #4 is not a keyframe
ERR0B1: Block at 1157257743 track #5 is not a keyframe
ERR0B1: Block at 1157477348 track #6 is not a keyframe
ERR0B1: Block at 1167595266 track #4 is not a keyframe
ERR0B1: Block at 1167603783 track #5 is not a keyframe
ERR0B1: Block at 1167700859 track #6 is not a keyframe
ERR0B1: Block at 1170807615 track #5 is not a keyframe
ERR0B1: Block at 1170910575 track #4 is not a keyframe
ERR0B1: Block at 1170910616 track #6 is not a keyframe
ERR0B1: Block at 1173627471 track #4 is not a keyframe
ERR0B1: Block at 1173646010 track #5 is not a keyframe
ERR0B1: Block at 1173888167 track #6 is not a keyframe
ERR0B1: Block at 1182141303 track #4 is not a keyframe
ERR0B1: Block at 1182141344 track #5 is not a keyframe
ERR0B1: Block at 1182242394 track #6 is not a keyframe
ERR0B1: Block at 1192917927 track #3 is not a keyframe
ERR0B1: Block at 1196382159 track #3 is not a keyframe
ERR0B1: Block at 1202797532 track #4 is not a keyframe
ERR0B1: Block at 1202821429 track #5 is not a keyframe
ERR0B1: Block at 1202937053 track #6 is not a keyframe
ERR0B1: Block at 1208314409 track #4 is not a keyframe
ERR0B1: Block at 1208314450 track #5 is not a keyframe
ERR0B1: Block at 1208408070 track #6 is not a keyframe
ERR0B1: Block at 1209664719 track #3 is not a keyframe
ERR0B1: Block at 1218641932 track #3 is not a keyframe
ERR0B1: Block at 1219147875 track #3 is not a keyframe
ERR0B1: Block at 1227105673 track #3 is not a keyframe
ERR0B1: Block at 1227314774 track #3 is not a keyframe
ERR0B1: Block at 1236500046 track #3 is not a keyframe
ERR0B1: Block at 1236704623 track #3 is not a keyframe
ERR0B1: Block at 1243034548 track #3 is not a keyframe
ERR0B1: Block at 1243216451 track #3 is not a keyframe
ERR0B1: Block at 1249242854 track #3 is not a keyframe
ERR0B1: Block at 1249459474 track #3 is not a keyframe
ERR0B1: Block at 1253553163 track #3 is not a keyframe
ERR0B1: Block at 1253779003 track #3 is not a keyframe
ERR0B1: Block at 1258101348 track #3 is not a keyframe
ERR0B1: Block at 1258251618 track #3 is not a keyframe
ERR0B1: Block at 1261770946 track #3 is not a keyframe
ERR0B1: Block at 1261954005 track #3 is not a keyframe
ERR0B1: Block at 1267692277 track #3 is not a keyframe
ERR0B1: Block at 1267933881 track #3 is not a keyframe
ERR0B1: Block at 1279109235 track #3 is not a keyframe
ERR0B1: Block at 1284571995 track #3 is not a keyframe
ERR0B1: Block at 1293964961 track #3 is not a keyframe
ERR0B1: Block at 1294283317 track #3 is not a keyframe
ERR0B1: Block at 1302851748 track #3 is not a keyframe
ERR0B1: Block at 1303041310 track #3 is not a keyframe
ERR0B1: Block at 1313068052 track #3 is not a keyframe
ERR0B1: Block at 1313358795 track #3 is not a keyframe
ERR0B1: Block at 1322176292 track #3 is not a keyframe
ERR0B1: Block at 1322472898 track #3 is not a keyframe
ERR0B1: Block at 1328572255 track #3 is not a keyframe
ERR0B1: Block at 1328750588 track #3 is not a keyframe
ERR0B1: Block at 1332752101 track #3 is not a keyframe
ERR0B1: Block at 1332974092 track #3 is not a keyframe
ERR0B1: Block at 1338045239 track #3 is not a keyframe
ERR0B1: Block at 1338266099 track #3 is not a keyframe
ERR0B1: Block at 1341774530 track #3 is not a keyframe
ERR0B1: Block at 1342034637 track #3 is not a keyframe
ERR0B1: Block at 1348687196 track #3 is not a keyframe
ERR0B1: Block at 1348949382 track #3 is not a keyframe
ERR0B1: Block at 1358928138 track #3 is not a keyframe
ERR0B1: Block at 1364751558 track #3 is not a keyframe
ERR0B1: Block at 1374435556 track #3 is not a keyframe
ERR0B1: Block at 1374626912 track #3 is not a keyframe
ERR0B1: Block at 1383812752 track #3 is not a keyframe
ERR0B1: Block at 1384094338 track #3 is not a keyframe
ERR0B1: Block at 1393865414 track #3 is not a keyframe
ERR0B1: Block at 1394097215 track #3 is not a keyframe
ERR0B1: Block at 1402155391 track #3 is not a keyframe
ERR0B1: Block at 1402314914 track #3 is not a keyframe
ERR0B1: Block at 1406959248 track #3 is not a keyframe
ERR0B1: Block at 1407082266 track #3 is not a keyframe
ERR0B1: Block at 1410503874 track #3 is not a keyframe
ERR0B1: Block at 1410682751 track #3 is not a keyframe
ERR0B1: Block at 1415926401 track #3 is not a keyframe
ERR0B1: Block at 1416165973 track #3 is not a keyframe
ERR0B1: Block at 1419939445 track #3 is not a keyframe
ERR0B1: Block at 1420216595 track #3 is not a keyframe
ERR0B1: Block at 1427424346 track #3 is not a keyframe
ERR0B1: Block at 1427682418 track #3 is not a keyframe
ERR0B1: Block at 1436970290 track #3 is not a keyframe
ERR0B1: Block at 1441368613 track #3 is not a keyframe
ERR0B1: Block at 1441373846 track #4 is not a keyframe
ERR0B1: Block at 1441379237 track #5 is not a keyframe
ERR0B1: Block at 1441384252 track #6 is not a keyframe
ERR0B1: Block at 1446116439 track #4 is not a keyframe
ERR0B1: Block at 1446116480 track #5 is not a keyframe
ERR0B1: Block at 1446116521 track #6 is not a keyframe
ERR0B1: Block at 1446322091 track #3 is not a keyframe
ERR0B1: Block at 1476875186 track #4 is not a keyframe
ERR0B1: Block at 1476879275 track #5 is not a keyframe
ERR0B1: Block at 1476890582 track #6 is not a keyframe
ERR0B1: Block at 1483460626 track #4 is not a keyframe
ERR0B1: Block at 1483460667 track #5 is not a keyframe
ERR0B1: Block at 1483460708 track #6 is not a keyframe
ERR0B1: Block at 1501758719 track #4 is not a keyframe
ERR0B1: Block at 1501776213 track #5 is not a keyframe
ERR0B1: Block at 1501795686 track #6 is not a keyframe
ERR0B1: Block at 1508534776 track #4 is not a keyframe
ERR0B1: Block at 1508534817 track #5 is not a keyframe
ERR0B1: Block at 1508534858 track #6 is not a keyframe
ERR0B1: Block at 1514224626 track #3 is not a keyframe
.....   file created with Lavf56.40.101 / Lavf56.40.101

real	0m15.592s
user	0m0.270s
sys	0m0.465s

So you are definitely on the right track. As expected, the change does introduce issues with seeking (takes a few seconds for video to sync up for certain chapters)

comment:27 by Hendrik, 9 years ago

The "patch" you tested just disables cue point writing, which is definitely not a fix, as Cues for subtitles are definitely useful.

comment:28 by Drag0nFly, 9 years ago

@heleppkes; Yes, I am well aware that this was not a permanent fix. ;) I used the word 'patch' as this was how the modified code got applied to the source tree.

in reply to:  26 comment:29 by Carl Eugen Hoyos, 9 years ago

Keywords: timecode removed

Replying to Drag0nFly:

@cehoyos–thanks for the patch. I've performed a few tests, and there is noticeable improvement.

I don't understand: Could you confirm that the issue you see (the Kodi bug, not the warnings from mkvalidator) disappears if you revert (disable) 39442b1a1b22f32a1f43eaf7e67c7fedee43b601?

comment:30 by Drag0nFly, 9 years ago

@cehoyos–Both the warnings, 'WRN311: The Cues entry for timecode nnnnnn ms is listed after entry nnnnnn ms' and the 'Kodi bug' disappears after I applied your change to the one line in matroskaenc.c which disabled cue point writing.

Sorry if that wasn't clear from my assessment above. (I see I didn't add the comment to the 2nd test that it played fine.)

comment:31 by Carl Eugen Hoyos, 9 years ago

Did you report the bug to the Kodi developers? Is there any indication for a bug that can be fixed within FFmpeg?

comment:32 by Drag0nFly, 9 years ago

Yes, as mentioned before I first reported the bug to the Kodi developers, even though FFmpeg is the only piece of software which generates this issue and is reported not just by this media player but also MakeMKV and mkvalidator. I also mentioned I did two lenghty bisects in an attempt to isolate the issue, which indicated a change in their ffmpeg tree.

I am however getting mildy amused at the lack of willingness to solve what is, frankly, a mess with the mkv muxer in FFmpeg.

Instead of me trying in vain to convince the devs of what seems to be considered unimportant issues ("not our bug" mentality) it might be a lot easier to actually process a file the same way as I indicated in the command output in the bug and observe the result: the mkvalidator errors (which aren't really important anyway, as there is no spec to conform to;), the errors from MakeMKV and the 'Kodi bug', which yes: they also should fix but haven't had time/priority to implement but it does not change the fact the FFmpeg's muxer is causing the behaviour in the first place.

Nevertheless, I am done wasting my time and have adapted my scripts to use HandbrakeCLI instead. Result: spec-conformant MKVs, much better seeking, and no 'bugs' with Kodi (and probably several other players as yet untested.)

Now if only I could undo the 1Tb of damage the FFmpeg-generated files in my library have caused.

comment:33 by gjdfgh, 9 years ago

I've checked the cue relative position elements, just in case kodi reads them. The code for them looks correct, and should be the same as mkvmerge produces.

We suspect that the order of cues is giving kodi problems, however Matroska gives no guarantee how cues are sorted. (Even if this mkvalidator things complains, it's ok.)

I am however getting mildy amused at the lack of willingness to solve what is, frankly, a mess with the mkv muxer in FFmpeg.

But you don't blame the kodi devs for not caring at all?

Nevertheless, I am done wasting my time and have adapted my scripts to use HandbrakeCLI instead.

HandbrakeCLI uses exactly the same code for muxing as ffmpeg does (libavformat). But at least you told us that we suck.

comment:34 by Drag0nFly, 9 years ago

Just to be clear: I wrote early on that I preferred FFmpeg, which would effectively rule out what you suggest above. It did however appear pretty clear that the devs weren't all too concerned about the defects and the differences in result after processing identical files with MakeMKV/Handbrake/mkvtoolnix vs. FFmpeg.

And yes, I do know both Handbrake and FFmpeg employs lavf; that was in the title of my bugreport to them; http://trac.kodi.tv/ticket/16027

I am disappointed that the Kodi devs haven't addressed it, but I know the person who usually takes care of it (FernetMenta) is busy implementing hevc acceleration via vaapi in, strangely enough, FFmpeg.

But this frankly does not change much. There are other errors in the MKV files FFMpeg generates, apart from the one I have reported here, that it is effectively unusable for this purpose. I have provided examples of those errors as well in the same report, as I am somewhat skeptical as to the effectiveness of opening up separate bug reports for those.

Luckily, the broken files can be corrected by remuxing them with MakeMKV, provided the stream is h264 and not hevc, in which case it will need to be re-encoded.

comment:35 by gjdfgh, 9 years ago

So I see on the kodi bug tracker:

I don't think this is a ffmpeg issue.

Why do you blame us?

comment:36 by Hendrik, 9 years ago

You can tell him to stop working then, and address your issue, as there is a VAAPI HEVC patch on the ffmpeg mailing list already.

Without understanding what exactly causes Kodi to misbehave, all we can do is stab in the dark and try to find any number of potential issues. There is zero proof that the mkvvalidator warnings are in fact related at all.

So are you expecting us to validate the entire matroska muxer on a whim, instead of just waiting for an actual description of what is causing problems, specifically?

comment:37 by Drag0nFly, 9 years ago

Resolution: fixed
Status: newclosed

in reply to:  36 comment:38 by Carl Eugen Hoyos, 9 years ago

Resolution: fixedinvalid

Replying to heleppkes:

There is zero proof that the mkvvalidator warnings are in fact related at all.

Why do you think so?

Note: See TracTickets for help on using tickets.