Opened 12 years ago
Closed 6 years ago
#2474 closed defect (fixed)
MKV transcoded to MKV with copied attachments is unplayable if output is stdout
Reported by: | bubbleguuum | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | mkv |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
Summary of the bug:
A MKV that contains attachments (for example additional fonts for subs) that is transcoded to another MKV, copying the attachements, results in an unplayable file ([02189f60] mkv demux error: cannot find any cluster, damaged file ?) if the output specified to ffmpeg is stdout (-) instead of a regular file.
If the attachements streams are omitted in the transcoded output file, the file is playable in both cases.
So there seems to be a specific problem with transcoding to stdout and MKV attachments.
How to reproduce:
First, donwload this MKV containing attachments:
http://www.auby.no/files/video_tests/h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet.mkv
Let's transcode it to MKV, copying the attachement streams, to a regular file named file1.mkv. This file is playabale.
$ ffmpeg -async 1 -i h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet.mkv -map 0 -vf scale="trunc(oh*a/2)*2:240" -vcodec libx264 -preset medium -acodec libmp3lame -ac 2 -ab 128000 -f matroska file1.mkv ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers built on Mar 28 2013 00:28:48 with gcc 4.8.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, matroska,webm, from 'h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet.mkv': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR creation_time : 2011-03-01 00:35:17 Duration: 00:01:52.83, start: 0.000000, bitrate: 7066 kb/s Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default) Metadata: title : AC3 5.1 Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font -async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000:first_pts=0. [libx264 @ 0422f380] using SAR=640/639 [libx264 @ 0422f380] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 [libx264 @ 0422f380] profile High, level 2.1 [libx264 @ 0422f380] 264 - core 130 r2274 c832fe9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=23 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, matroska, to 'file1.mkv': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR encoder : Lavf54.63.104 Stream #0:0(eng): Video: h264 (H264 / 0x34363248), yuv420p, 426x240 [SAR 640:639 DAR 16:9], q=-1--1, 1k tbn, 23.98 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole Stream #0:1(eng): Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: title : AC3 5.1 Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font Stream mapping: Stream #0:0 -> #0:0 (h264 -> libx264) Stream #0:1 -> #0:1 (ac3 -> libmp3lame) Stream #0:2 -> #0:2 (ass -> ass) Stream #0:3 -> #0:3 (ass -> ass) Stream #0:4 -> #0:4 (copy) Stream #0:5 -> #0:5 (copy) Press [q] to stop, [?] for help frame= 2705 fps=155 q=2686567.0 Lsize= 11312kB time=00:01:52.84 bitrate= 821.2kbits/s video:9298kB audio:1764kB subtitle:2 global headers:2kB muxing overhead 2.238986% [libx264 @ 0422f380] frame I:20 Avg QP:19.09 size: 15456 [libx264 @ 0422f380] frame P:1418 Avg QP:23.83 size: 5843 [libx264 @ 0422f380] frame B:1267 Avg QP:25.03 size: 730 [libx264 @ 0422f380] consecutive B-frames: 29.4% 21.1% 10.3% 39.2% [libx264 @ 0422f380] mb I I16..4: 39.5% 30.6% 30.0% [libx264 @ 0422f380] mb P I16..4: 0.4% 0.4% 0.8% P16..4: 26.9% 16.7% 13.4% 0.0% 0.0% skip:41.4% [libx264 @ 0422f380] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 29.4% 2.7% 1.3% direct: 3.2% skip:63.4% L0:32.1% L1:49.9% BI:18.0% [libx264 @ 0422f380] 8x8 transform intra:27.2% inter:46.1% [libx264 @ 0422f380] coded y,uvDC,uvAC intra: 64.7% 65.6% 50.9% inter: 23.3% 12.8% 1.7% [libx264 @ 0422f380] i16 v,h,dc,p: 70% 10% 9% 11% [libx264 @ 0422f380] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 18% 19% 8% 8% 7% 8% 8% 13% [libx264 @ 0422f380] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 18% 15% 9% 9% 8% 10% 7% 13% [libx264 @ 0422f380] i8c dc,h,v,p: 65% 18% 11% 6% [libx264 @ 0422f380] Weighted P-Frames: Y:11.3% UV:0.9% [libx264 @ 0422f380] ref P L0: 70.0% 20.6% 5.8% 3.4% 0.2% [libx264 @ 0422f380] ref B L0: 87.3% 9.6% 3.1% [libx264 @ 0422f380] ref B L1: 87.6% 12.4% [libx264 @ 0422f380] kb/s:675.06
Now let's transcode it but specifying stdout (-) as the output and redirecting stdout to file2.mkv. file2.mkv is not playabale and VLC gives error "mkv demux error: cannot find any cluster, damaged file ?". Discarding the attachement streams in the resulting file would render the file playable.
$ ffmpeg -async 1 -i h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet.mkv -map 0 -vf scale="trunc(oh*a/2)*2:240" -vcodec libx264 -preset medium -acodec libmp3lame -ac 2 -ab 128000 -f matroska - > file2.mkv ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers built on Mar 28 2013 00:28:48 with gcc 4.8.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, matroska,webm, from 'h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet.mkv': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR creation_time : 2011-03-01 00:35:17 Duration: 00:01:52.83, start: 0.000000, bitrate: 7066 kb/s Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default) Metadata: title : AC3 5.1 Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font -async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000:first_pts=0. [libx264 @ 0433cba0] using SAR=640/639 [libx264 @ 0433cba0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 [libx264 @ 0433cba0] profile High, level 2.1 [libx264 @ 0433cba0] 264 - core 130 r2274 c832fe9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=23 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, matroska, to 'pipe:': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR encoder : Lavf54.63.104 Stream #0:0(eng): Video: h264 (H264 / 0x34363248), yuv420p, 426x240 [SAR 640:639 DAR 16:9], q=-1--1, 1k tbn, 23.98 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole Stream #0:1(eng): Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: title : AC3 5.1 Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font Stream mapping: Stream #0:0 -> #0:0 (h264 -> libx264) Stream #0:1 -> #0:1 (ac3 -> libmp3lame) Stream #0:2 -> #0:2 (ass -> ass) Stream #0:3 -> #0:3 (ass -> ass) Stream #0:4 -> #0:4 (copy) Stream #0:5 -> #0:5 (copy) Press [q] to stop, [?] for help frame= 2705 fps=160 q=2686567.0 Lsize= 11316kB time=00:01:52.84 bitrate= 821.5kbits/s video:9298kB audio:1764kB subtitle:2 global headers:2kB muxing overhead 2.277988% [libx264 @ 0433cba0] frame I:20 Avg QP:19.09 size: 15456 [libx264 @ 0433cba0] frame P:1418 Avg QP:23.83 size: 5843 [libx264 @ 0433cba0] frame B:1267 Avg QP:25.03 size: 730 [libx264 @ 0433cba0] consecutive B-frames: 29.4% 21.1% 10.3% 39.2% [libx264 @ 0433cba0] mb I I16..4: 39.5% 30.6% 30.0% [libx264 @ 0433cba0] mb P I16..4: 0.4% 0.4% 0.8% P16..4: 26.9% 16.7% 13.4% 0.0% 0.0% skip:41.4% [libx264 @ 0433cba0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 29.4% 2.7% 1.3% direct: 3.2% skip:63.4% L0:32.1% L1:49.9% BI:18.0% [libx264 @ 0433cba0] 8x8 transform intra:27.2% inter:46.1% [libx264 @ 0433cba0] coded y,uvDC,uvAC intra: 64.7% 65.6% 50.9% inter: 23.3% 12.8% 1.7% [libx264 @ 0433cba0] i16 v,h,dc,p: 70% 10% 9% 11% [libx264 @ 0433cba0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 18% 19% 8% 8% 7% 8% 8% 13% [libx264 @ 0433cba0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 18% 15% 9% 9% 8% 10% 7% 13% [libx264 @ 0433cba0] i8c dc,h,v,p: 65% 18% 11% 6% [libx264 @ 0433cba0] Weighted P-Frames: Y:11.3% UV:0.9% [libx264 @ 0433cba0] ref P L0: 70.0% 20.6% 5.8% 3.4% 0.2% [libx264 @ 0433cba0] ref B L0: 87.3% 9.6% 3.1% [libx264 @ 0433cba0] ref B L1: 87.6% 12.4% [libx264 @ 0433cba0] kb/s:675.06
Attachments (1)
Change History (6)
follow-up: 3 comment:1 by , 12 years ago
comment:2 by , 12 years ago
Component: | FFmpeg → avformat |
---|---|
Keywords: | mkv added |
Is this not reproducible with current git head?
comment:3 by , 12 years ago
Indeed, it is probably an issue related to stdout not being seekable. In any case, there is no error message.
It would be nice if attachments could be written in MKV without requiring seeking, if it is at all possible. That would allow to make such generated files http streamable on the fly without having to discard attachments.
by , 11 years ago
Attachment: | h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet_cut.mkv added |
---|
comment:4 by , 11 years ago
Reproduced by developer: | set |
---|---|
Status: | new → open |
Version: | 1.2 → git-master |
$ ffmpeg -i h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet_cut.mkv -map 0 -f matroska - >out.mkv ffmpeg version N-53670-g1a7ae6b Copyright (c) 2000-2013 the FFmpeg developers built on May 30 2013 13:02:45 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --disable-indev=jack libavutil 52. 34.100 / 52. 34.100 libavcodec 55. 12.102 / 55. 12.102 libavformat 55. 8.100 / 55. 8.100 libavdevice 55. 2.100 / 55. 2.100 libavfilter 3. 72.100 / 3. 72.100 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 Input #0, matroska,webm, from 'h264_720p_hp_5.1_6mbps_ac3_unstyled_subs_planet_cut.mkv': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR ENCODER : Lavf55.8.100 Duration: 00:00:30.04, start: 0.000000, bitrate: 448 kb/s Stream #0:0(eng): Video: mpeg4 (Simple Profile), yuv420p, 320x180 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 13978 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole LANGUAGE : eng Stream #0:1(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default) Metadata: title : AC3 5.1 LANGUAGE : eng Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font Output #0, matroska, to 'pipe:': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR encoder : Lavf55.8.100 Stream #0:0(eng): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x180 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 1k tbn, 23.98 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole LANGUAGE : eng Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s (default) Metadata: title : AC3 5.1 LANGUAGE : eng Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:4: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:5: Attachment: unknown_codec Metadata: filename : Framd.TTF mimetype : application/x-truetype-font Stream mapping: Stream #0:0 -> #0:0 (mpeg4 -> mpeg4) Stream #0:1 -> #0:1 (ac3 -> ac3) Stream #0:2 -> #0:2 (ssa -> ssa) Stream #0:3 -> #0:3 (ssa -> ssa) Stream #0:4 -> #0:4 (copy) Stream #0:5 -> #0:5 (copy) Press [q] to stop, [?] for help frame= 720 fps=0.0 q=2.0 Lsize= 1576kB time=00:00:30.03 bitrate= 430.0kbits/s video:662kB audio:704kB subtitle:0 global headers:2kB muxing overhead 15.302800%
$ ffmpeg -i out.mkv ffmpeg version N-53670-g1a7ae6b Copyright (c) 2000-2013 the FFmpeg developers built on May 30 2013 13:02:45 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --disable-indev=jack libavutil 52. 34.100 / 52. 34.100 libavcodec 55. 12.102 / 55. 12.102 libavformat 55. 8.100 / 55. 8.100 libavdevice 55. 2.100 / 55. 2.100 libavfilter 3. 72.100 / 3. 72.100 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 [matroska,webm @ 0x276d020] Unknown entry 0x61A7 Last message repeated 1 times [matroska,webm @ 0x276d020] max_analyze_duration 5000000 reached at 5005008 microseconds [matroska,webm @ 0x276d020] Estimating duration from bitrate, this may be inaccurate Guessed Channel Layout for Input Stream #0.5 : stereo Input #0, matroska,webm, from 'out.mkv': Metadata: title : Planet.Earth.EP01.From.Pole.to.Pole.2006.720p.HDDVD.x264-ESiR ENCODER : Lavf55.8.100 Duration: 00:01:07.25, start: 0.000000, bitrate: 191 kb/s Stream #0:0(eng): Video: mpeg4 (Simple Profile), yuv420p, 320x180 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 13978 tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole LANGUAGE : eng Stream #0:1(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default) Metadata: title : AC3 5.1 LANGUAGE : eng Stream #0:2(eng): Subtitle: ssa (default) Stream #0:3(rum): Subtitle: ssa Stream #0:4(eng): Video: mpeg4, yuv420p, 320x180, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default) Metadata: title : Planet Earth - EP01 - From Pole to Pole LANGUAGE : eng Stream #0:5(eng): Audio: ac3, 48000 Hz, stereo, fltp (default) Metadata: title : AC3 5.1 LANGUAGE : eng Stream #0:6(eng): Subtitle: ssa (default) Stream #0:7(rum): Subtitle: ssa Codec 0x18000 is not in the full list. Stream #0:8: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font Codec 0x18000 is not in the full list. Stream #0:9: Attachment: unknown_codec Metadata: filename : exprswy_free.ttf mimetype : application/x-truetype-font At least one output file must be specified
comment:5 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
This has been fixed, most likely by commit 4687240d52b398573ae64447c82e3be24749224b. Since this commit, a dynamic buffer is used to write the attachments, so that seeking back to update the size elements is avoided in the non-seekable case.
Some MKV features may need seeking ability in the output file, so maybe those should then not be enabled if seeking is not available.