Opened 11 years ago

Closed 5 years ago

#2023 closed defect (invalid)

mkvalidator does not like how FFmpeg muxes pgssubtitles

Reported by: Carl Eugen Hoyos Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: pgssub mkv
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Related to ticket #379

http://samples.mplayerhq.hu/sub/BluRay/sample-dts-not-valid-dca-frame.m2ts
When remuxing pgssub into mkv, the resulting file plays fine with ffplay (and MPlayer), but mkvalidator is unhappy with the output file.

$ ffmpeg -i sample-dts-not-valid-dca-frame.m2ts -vcodec copy -acodec copy -scodec copy out.mkv
ffmpeg version N-47774-g26db653 Copyright (c) 2000-2012 the FFmpeg developers
  built on Dec 12 2012 21:57:33 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack
  libavutil      52. 12.100 / 52. 12.100
  libavcodec     54. 79.102 / 54. 79.102
  libavformat    54. 49.101 / 54. 49.101
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 26.102 /  3. 26.102
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[dca @ 0x21fe320] Not a valid DCA frame
    Last message repeated 52 times
[mpegts @ 0x2150280] Stream #5: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #6: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #7: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #8: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #9: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #10: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #11: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #12: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #13: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #14: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #15: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #16: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #17: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #18: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #19: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #20: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Stream #21: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x2150280] Could not find codec parameters for stream 5 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 6 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 7 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 8 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 9 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 10 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 11 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 12 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 13 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 14 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 15 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 16 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 17 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 18 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 19 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 20 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] Could not find codec parameters for stream 21 (Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x2150280] decoding for stream 22 failed
[mpegts @ 0x2150280] Could not find codec parameters for stream 22 (Audio: dts ([162][0][0][0] / 0x00A2), 0 channels, fltp): unspecified sample rate
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[NULL @ 0x2156f40] start time is not set in estimate_timings_from_pts
[NULL @ 0x2157860] start time is not set in estimate_timings_from_pts
[NULL @ 0x2158180] start time is not set in estimate_timings_from_pts
[NULL @ 0x21a6120] start time is not set in estimate_timings_from_pts
[NULL @ 0x21ac580] start time is not set in estimate_timings_from_pts
[NULL @ 0x21b2a60] start time is not set in estimate_timings_from_pts
[NULL @ 0x21b8f40] start time is not set in estimate_timings_from_pts
[NULL @ 0x21bf340] start time is not set in estimate_timings_from_pts
[NULL @ 0x21c5820] start time is not set in estimate_timings_from_pts
[NULL @ 0x21cbd00] start time is not set in estimate_timings_from_pts
[NULL @ 0x21d2220] start time is not set in estimate_timings_from_pts
[NULL @ 0x21d8700] start time is not set in estimate_timings_from_pts
[NULL @ 0x21dec80] start time is not set in estimate_timings_from_pts
[NULL @ 0x21e5080] start time is not set in estimate_timings_from_pts
[NULL @ 0x21eb480] start time is not set in estimate_timings_from_pts
[NULL @ 0x21f1960] start time is not set in estimate_timings_from_pts
[NULL @ 0x21f7e40] start time is not set in estimate_timings_from_pts
[mpegts @ 0x2150280] PES packet size mismatch
    Last message repeated 3 times
Input #0, mpegts, from 'sample-dts-not-valid-dca-frame.m2ts':
  Duration: 00:00:53.18, start: 11.608967, bitrate: 16276 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0:1[0x1100]: Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 48000 Hz, 5.1(side), fltp, 1536 kb/s
    Stream #0:2[0x1101]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:3[0x1102]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:4[0x1103]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:5[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:6[0x1201]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:7[0x1202]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:8[0x1203]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:9[0x1204]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:10[0x1205]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:11[0x1206]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:12[0x1207]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:13[0x1208]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:14[0x1209]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:15[0x120a]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:16[0x120b]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:17[0x120c]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:18[0x120d]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:19[0x120e]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:20[0x120f]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:21[0x1210]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:22[0x1a00]: Audio: dts ([162][0][0][0] / 0x00A2), 0 channels, fltp
    Stream #0:23[0x1b00]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 720x480 [SAR 40:33 DAR 20:11], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Output #0, matroska, to 'out.mkv':
  Metadata:
    encoder         : Lavf54.49.101
    Stream #0:0: Video: h264 (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 1k tbn, 90k tbc
    Stream #0:1: Audio: dts ([134][0][0][0] / 0x0086), 48000 Hz, 5.1(side), 1536 kb/s
    Stream #0:2: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:5 -> #0:2 (copy)
Press [q] to stop, [?] for help
[mpegts @ 0x2150280] PES packet size mismatch
frame= 1273 fps=0.0 q=-1.0 Lsize=   88047kB time=00:00:53.05 bitrate=13595.5kbits/s
video:70275kB audio:17585kB subtitle:134 global headers:0kB muxing overhead 0.059732%
$ mkvalidator out.mkv
ERR0B1: Block at 50661520 track #3 is not a keyframe
ERR0B1: Block at 50661553 track #3 is not a keyframe
ERR0B1: Block at 50661578 track #3 is not a keyframe
ERR0B1: Block at 50661917 track #3 is not a keyframe
ERR0B1: Block at 50707127 track #3 is not a keyframe
ERR0B1: Block at 56486707 track #3 is not a keyframe
ERR0B1: Block at 56486732 track #3 is not a keyframe
ERR0B1: Block at 56486756 track #3 is not a keyframe
ERR0B1: Block at 58281775 track #3 is not a keyframe
ERR0B1: Block at 58281808 track #3 is not a keyframe
ERR0B1: Block at 58281833 track #3 is not a keyframe
ERR0B1: Block at 58282172 track #3 is not a keyframe
ERR0B1: Block at 58322632 track #3 is not a keyframe
ERR0B1: Block at 70426654 track #3 is not a keyframe
ERR0B1: Block at 70426679 track #3 is not a keyframe
ERR0B1: Block at 70426703 track #3 is not a keyframe
ERR0B1: Block at 70946184 track #3 is not a keyframe
ERR0B1: Block at 70946217 track #3 is not a keyframe
ERR0B1: Block at 70946242 track #3 is not a keyframe
ERR0B1: Block at 70946581 track #3 is not a keyframe
ERR0B1: Block at 70974021 track #3 is not a keyframe
ERR0B1: Block at 82469195 track #3 is not a keyframe
ERR0B1: Block at 82469220 track #3 is not a keyframe
ERR0B1: Block at 82469244 track #3 is not a keyframe
ERR0B1: Block at 85421140 track #3 is not a keyframe
ERR0B1: Block at 85421173 track #3 is not a keyframe
ERR0B1: Block at 85421198 track #3 is not a keyframe
ERR0B1: Block at 85421537 track #3 is not a keyframe
ERR0B1: Block at 85461724 track #3 is not a keyframe
....    file created with Lavf54.49.101 / Lavf54.49.101

ffprobe -show_packets show duration, duration_time, convergence_duration and convergence_duration_time as "N/A" for all subtitle packets.

Change History (1)

comment:1 by mkver, 5 years ago

Resolution: invalid
Status: newclosed
  1. FFmpeg writes unknown-length subtitle blocks as BlockGroups? with a duration element indicating a duration of zero. This is insane and I intend to change this (after my current open patchset for the Matroska muxer has been dealt with...), but it is not spec-incompliant.
  2. mkvalidator's error is based upon an insane and now removed part of the Matroska specs: That a BlockGroup with a duration of zero can't be a keyframe. This has since been removed (see ​https://github.com/Matroska-Org/matroska-specification/commit/9313a00f7391a285f95e9d6f0a5f8f3f80ed4779), but mkvalidator (even the current release of 0.5.2) has not been fixed yet. A PR for this is here: ​https://github.com/Matroska-Org/foundation-source/pull/40, but it hasn't been accepted yet.
  3. Therefore I'm closing this as invalid.
Note: See TracTickets for help on using tickets.