[FFmpeg-trac] #6903(undetermined:new): Muxing TS into MKV container
FFmpeg
trac at avcodec.org
Sat Dec 9 02:33:51 EET 2017
#6903: Muxing TS into MKV container
-------------------------------------+-------------------------------------
Reporter: | Owner:
alexrichmond | Status: new
Type: defect | Component:
Priority: important | undetermined
Version: git-master | Resolution:
Keywords: TS MKV | Blocked By:
Muxing | Reproduced by developer: 0
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Comment (by mkver):
The video track in your file switches between coded frames and coded
fields (field_pic_flag in the slice header changes). The problem is that
every pair of complementary fields is combined in one PES packet in the
transport stream so that the transport stream only provides timestamps for
one field for every pair of complementary fields (when coded fields are
used). The second field doesn't have a timestamp and this explains your
error.
For the sake of simplicity I have cut the file and uploaded the relevant
part.
mkvmerge can handle this situation. Here is what mkvinfo has to say about
mkvmerge's output:
{{{
Track 1: video, codec ID: V_MPEG4/ISO/AVC (h.264 profile: High @L4.0),
mkvmerge/mkvextract track ID: 0, language: und, pixel width: 1920, pixel
height: 1080, display width: 1920, display height: 1080, default duration:
40.000ms (25.000 frames/fields per second for a video track)
I frame, track 1, timestamp 1102 (00:00:01.102), size 146899, adler
0x3a9b4aba
P frame, track 1, timestamp 942 (00:00:00.942), size 139374, adler
0xfc4c0269
P frame, track 1, timestamp 862 (00:00:00.862), size 90443, adler
0x1080007c
B frame, track 1, timestamp 822 (00:00:00.822), size 40792, adler
0xf7090a1b
P frame, track 1, timestamp 902 (00:00:00.902), size 49530, adler
0x4218bf70
P frame, track 1, timestamp 1022 (00:00:01.022), size 101863, adler
0x03f2a5ab
P frame, track 1, timestamp 982 (00:00:00.982), size 75109, adler
0x115f480f
P frame, track 1, timestamp 1062 (00:00:01.062), size 47457, adler
0x794afe20
P frame, track 1, timestamp 1422 (00:00:01.422), size 180802, adler
0x268e64f6
P frame, track 1, timestamp 1262 (00:00:01.262), size 148743, adler
0xe6e9b429
P frame, track 1, timestamp 1182 (00:00:01.182), size 132469, adler
0x208d28a3
B frame, track 1, timestamp 1142 (00:00:01.142), size 88067, adler
0x3b75e181
P frame, track 1, timestamp 1222 (00:00:01.222), size 100645, adler
0x37589268
P frame, track 1, timestamp 1342 (00:00:01.342), size 103806, adler
0xc7ef60c5
P frame, track 1, timestamp 1302 (00:00:01.302), size 78379, adler
0x72cfba8d
P frame, track 1, timestamp 1382 (00:00:01.382), size 62003, adler
0x1e548cc1
P frame, track 1, timestamp 1742 (00:00:01.742), duration 20.000, size
105633, adler 0x36d720d4
P frame, track 1, timestamp 1762 (00:00:01.762), duration 20.000, size
19106, adler 0x4e06f0aa
B frame, track 1, timestamp 1582 (00:00:01.582), duration 20.000, size
52108, adler 0xc9272e8b
B frame, track 1, timestamp 1602 (00:00:01.602), duration 20.000, size
12234, adler 0x559ff846
B frame, track 1, timestamp 1502 (00:00:01.502), duration 20.000, size
38976, adler 0xa30ef9a1
B frame, track 1, timestamp 1522 (00:00:01.522), duration 20.000, size
9769, adler 0x8e881b27
B frame, track 1, timestamp 1462 (00:00:01.462), size 50844, adler
0x0e951a7b
B frame, track 1, timestamp 1542 (00:00:01.542), duration 20.000, size
18126, adler 0x7b987a92
B frame, track 1, timestamp 1562 (00:00:01.562), duration 20.000, size
7613, adler 0x9e31d455
B frame, track 1, timestamp 1662 (00:00:01.662), duration 20.000, size
30925, adler 0x30dd0036
B frame, track 1, timestamp 1682 (00:00:01.682), duration 20.000, size
9885, adler 0x952070f0
B frame, track 1, timestamp 1622 (00:00:01.622), duration 20.000, size
19439, adler 0x3d890a0b
B frame, track 1, timestamp 1642 (00:00:01.642), duration 20.000, size
8698, adler 0x65f0e903
B frame, track 1, timestamp 1702 (00:00:01.702), duration 20.000, size
13952, adler 0x39c035d4
B frame, track 1, timestamp 1722 (00:00:01.722), duration 20.000, size
7518, adler 0x269b94cc
I frame, track 1, timestamp 2062 (00:00:02.062), duration 20.000, size
189404, adler 0xb07b01ac
P frame, track 1, timestamp 2082 (00:00:02.082), duration 20.000, size
59511, adler 0x0489e5cf
B frame, track 1, timestamp 1902 (00:00:01.902), duration 20.000, size
50243, adler 0x1da2fcc7
B frame, track 1, timestamp 1922 (00:00:01.922), duration 60.000, size
19604, adler 0x28535ea4
B frame, track 1, timestamp 1822 (00:00:01.822), duration 20.000, size
31691, adler 0x4902c0d2
B frame, track 1, timestamp 1842 (00:00:01.842), duration 20.000, size
15479, adler 0xbb242d78
B frame, track 1, timestamp 1782 (00:00:01.782), duration 20.000, size
14940, adler 0x46e4ed6e
B frame, track 1, timestamp 1802 (00:00:01.802), duration 20.000, size
15016, adler 0x5eab3de5
B frame, track 1, timestamp 1862 (00:00:01.862), duration 20.000, size
13772, adler 0x0275e9b0
B frame, track 1, timestamp 1882 (00:00:01.882), duration 20.000, size
9647, adler 0x04c3f910
B frame, track 1, timestamp 1982 (00:00:01.982), duration 80.000, size
8251, adler 0x1997e534
}}}
The block with adler checksum 0x36d720d4 (the first with a duration of
20ms) is the last block that ends up in ffmpeg's output. The next block
leads to the error.
And here is the output of the framehash muxer applied to (cut) input file.
As can be seen, only every second packet has a valid timestamp.
{{{
#format: frame checksums
#version: 2
#hash: CRC32
#extradata 0, 110, 130299f3
#software: Lavf58.2.103
#tb 0: 1/90000
#media_type 0: video
#codec_id 0: h264
#dimensions 0: 1920x1080
#sar 0: 1/1
#stream#, dts, pts, duration, size, hash
0, -3600, 32400, 3600, 147015, 280a8ac2, S=1, 1,
72080df5
0, 0, 18000, 3600, 139379, c5bc026d, S=1, 1,
72080df5
0, 3600, 10800, 3600, 90452, cb81a659, S=1, 1,
72080df5
0, 7200, 7200, 3600, 40805, 158780ca, S=1, 1,
72080df5
0, 10800, 14400, 3600, 49542, 0290949d, S=1, 1,
72080df5
0, 14400, 25200, 3600, 101868, becdf100, S=1, 1,
72080df5
0, 18000, 21600, 3600, 75120, 51bdfb2f, S=1, 1,
72080df5
0, 21600, 28800, 3600, 47467, 26b3bf62, S=1, 1,
72080df5
0, 25200, 61200, 3600, 180815, f7093884, S=1, 1,
72080df5
0, 28800, 46800, 3600, 148755, 047146bd, S=1, 1,
72080df5
0, 32400, 39600, 3600, 132479, 07437aff, S=1, 1,
72080df5
0, 36000, 36000, 3600, 88078, ada5eae3, S=1, 1,
72080df5
0, 39600, 43200, 3600, 100655, cd0ea4c9, S=1, 1,
72080df5
0, 43200, 54000, 3600, 103818, 5b1d8c1d, S=1, 1,
72080df5
0, 46800, 50400, 3600, 78384, 33e85f29, S=1, 1,
72080df5
0, 50400, 57600, 3600, 62008, aeee912a, S=1, 1,
72080df5
0, 54000, 90000, 1800, 105643, fac38f0f
0, 55800, -9223372036854775808, 1800, 19117, 9143fc1a, S=1,
1, 72080df5
0, 57600, 75600, 1800, 52121, 87d79e2e
0, 59400, -9223372036854775808, 1800, 12239, ef063aa0, S=1,
1, 72080df5
0, 61200, 68400, 1800, 38984, 57de3fcd
0, 63000, -9223372036854775808, 1800, 9779, 26b31b16, S=1,
1, 72080df5
0, 64800, 64800, 3600, 50849, 0fbc8a5a, S=1, 1,
72080df5
0, 68400, 72000, 1800, 18139, c4c7f8eb
0, 70200, -9223372036854775808, 1800, 7626, 3666c94a, S=1,
1, 72080df5
0, 72000, 82800, 1800, 30933, 403002dc
0, 73800, -9223372036854775808, 1800, 9890, 22275811, S=1,
1, 72080df5
0, 75600, 79200, 1800, 19451, ef4db7c1
0, 77400, -9223372036854775808, 1800, 8707, dfc12bf5, S=1,
1, 72080df5
0, 79200, 86400, 1800, 13966, 121ddec9
0, 81000, -9223372036854775808, 1800, 7529, 9f926233, S=1,
1, 72080df5
0, 82800, 118800, 1800, 189412, a1dcfcbc
0, 84600, -9223372036854775808, 1800, 59516, 368b319a, S=1,
1, 72080df5
0, 86400, 104400, 1800, 50256, a45247e5
0, 88200, -9223372036854775808, 1800, 19609, 18355df4, S=1,
1, 72080df5
0, 90000, 97200, 1800, 31705, bdb848d5
0, 91800, -9223372036854775808, 1800, 15491, b98d3a33, S=1,
1, 72080df5
0, 93600, 93600, 1800, 14954, 31a1b146
0, 95400, -9223372036854775808, 1800, 15021, 4164f608, S=1,
1, 72080df5
0, 97200, 100800, 1800, 13786, 9890a1d1
0, 99000, -9223372036854775808, 1800, 9658, 7cc0f086, S=1,
1, 72080df5
0, 100800, 111600, 1800, 8256, c1c262f6
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6903#comment:3>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list