drmpeg
25th November 2007, 17:16
I've updated xport to remove the sequence end codes from the demuxed video elementary stream. This avoids having to use TSRemux just for this purpose on concatenated Blu-ray .m2ts files.
Version 1.00
http://www.w6rz.net/xport.zip
I've also looked at the A/V sync issues with seamless branching titles (where multiple .m2ts files are joined together). xport is working correctly, but there are issues with the way the segments are authored. Basically, there's too much audio at the end of each segment. Unfortunately, it can't be avoided, since each segment must end with a full PES packet for audio.
This means there can be as much as 5 milliseconds of extra LPCM audio and as much as 32 milliseconds of extra AC3 audio per segment.
I've also cleaned up the PTS/DTS dumping, so that it can be used to show the extra audio. Here's an example:
C:\xfer>xport -havs 00017tail.m2ts 1 1 1
xport Transport Stream Demuxer 1.00
program = 1, video channel = 1, audio channel = 1
Transport Sync Error, skipped 64 bytes, at 0
Program Number = 0 (0x0000), Program Map PID = 31 (0x001f)
Program Number = 1 (0x0001), Program Map PID = 256 (0x0100)
program descriptor = 0x05, 0x04, 0x48, 0x44, 0x4d, 0x56
program descriptor = 0x88, 0x04, 0x0f, 0xff, 0xff, 0xfc
Video PID = 4113 <0x1011>, type = 0x1b
ES descriptor for stream type 0x1b = 0x05, 0x08, 0x48, 0x44, 0x4d, 0x56, 0xff, 0x1b, 0x61, 0x3f
Audio PID = 4352 <0x1100>, type = 0x80
ES descriptor for stream type 0x80 = 0x05, 0x08, 0x48, 0x44, 0x4d, 0x56, 0xff, 0x80, 0x61, 0xff
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x29, 0x04, 0x00
Audio PTS = 2529960, 2529960
LPCM Audio Mode = 3/2+lfe
LPCM Audio Bits/sample = 24
LPCM Audio Sample Rate = 48000
Audio PTS = 2530410, 450
Audio PTS = 2530860, 450
Audio PTS = 2531310, 450
Audio PTS = 2531760, 450
Audio PTS = 2532210, 450
Audio PTS = 2532660, 450
Audio PTS = 2533110, 450
Audio PTS = 2533560, 450
Audio PTS = 2534010, 450
Audio PTS = 2534460, 450
Audio PTS = 2534910, 450
Video PTS(B) = 2553813
Audio PTS = 2535360, 450
Audio PTS = 2535810, 450
Audio PTS = 2536260, 450
Video PTS(B) = 2557567, 3754
Audio PTS = 2536710, 450
Audio PTS = 2537160, 450
Audio PTS = 2537610, 450
Audio PTS = 2538060, 450
Audio PTS = 2538510, 450
Audio PTS = 2538960, 450
Audio PTS = 2539410, 450
Audio PTS = 2539860, 450
Audio PTS = 2540310, 450
Audio PTS = 2540760, 450
Audio PTS = 2541210, 450
Audio PTS = 2541660, 450
Audio PTS = 2542110, 450
Audio PTS = 2542560, 450
Audio PTS = 2543010, 450
Audio PTS = 2543460, 450
Audio PTS = 2543910, 450
Video PTS(P) = 2572582, DTS(P) = 2561321, 3754
Audio PTS = 2544360, 450
Audio PTS = 2544810, 450
Audio PTS = 2545260, 450
Audio PTS = 2545710, 450
Audio PTS = 2546160, 450
Audio PTS = 2546610, 450
Audio PTS = 2547060, 450
Video PTS(B) = 2565075, 3754
Audio PTS = 2547510, 450
Audio PTS = 2547960, 450
Audio PTS = 2548410, 450
Audio PTS = 2548860, 450
Video PTS(B) = 2568828, 3753
Audio PTS = 2549310, 450
Video PTS(P) = 2583843, DTS(P) = 2572582, 3754
Audio PTS = 2549760, 450
Audio PTS = 2550210, 450
Audio PTS = 2550660, 450
<big snip>
.
.
Video PTS(P) = 2737747, DTS(P) = 2726486, 3754
Audio PTS = 2701410, 450
Audio PTS = 2701860, 450
Audio PTS = 2702310, 450
Audio PTS = 2702760, 450
Audio PTS = 2703210, 450
Audio PTS = 2703660, 450
Audio PTS = 2704110, 450
Audio PTS = 2704560, 450
Video PTS(B) = 2730240, 3754
Audio PTS = 2705010, 450
Audio PTS = 2705460, 450
Audio PTS = 2705910, 450
Audio PTS = 2706360, 450
Audio PTS = 2706810, 450
Audio PTS = 2707260, 450
Audio PTS = 2707710, 450
Audio PTS = 2708160, 450
Audio PTS = 2708610, 450
Video PTS(B) = 2733993, 3753
Audio PTS = 2709060, 450
Audio PTS = 2709510, 450
Audio PTS = 2709960, 450
Audio PTS = 2710410, 450
Audio PTS = 2710860, 450
Audio PTS = 2711310, 450
Audio PTS = 2711760, 450
Audio PTS = 2712210, 450
Video PTS(P) = 2749008, DTS(P) = 2737747, 3754 <-- last video PTS
Audio PTS = 2712660, 450
Audio PTS = 2713110, 450
Audio PTS = 2713560, 450
Audio PTS = 2714010, 450
Audio PTS = 2714460, 450
Audio PTS = 2714910, 450
Audio PTS = 2715360, 450
Audio PTS = 2715810, 450
Audio PTS = 2716260, 450
Video PTS(B) = 2741501, 3754
Audio PTS = 2716710, 450
Audio PTS = 2717160, 450
Audio PTS = 2717610, 450
Audio PTS = 2718060, 450
Audio PTS = 2718510, 450
Audio PTS = 2718960, 450
Audio PTS = 2719410, 450
Audio PTS = 2719860, 450
Video PTS(B) = 2745255, 3754
Audio PTS = 2720310, 450
Audio PTS = 2720760, 450
Audio PTS = 2721210, 450
Audio PTS = 2721660, 450
Audio PTS = 2722110, 450
Audio PTS = 2722560, 450
Audio PTS = 2723010, 450
Audio PTS = 2723460, 450
Audio PTS = 2723910, 450
Audio PTS = 2724360, 450
Audio PTS = 2724810, 450
Audio PTS = 2725260, 450
Audio PTS = 2725710, 450
Audio PTS = 2726160, 450
Audio PTS = 2726610, 450
Audio PTS = 2727060, 450
Audio PTS = 2727510, 450
Audio PTS = 2727960, 450
Audio PTS = 2728410, 450
Audio PTS = 2728860, 450
Audio PTS = 2729310, 450
Audio PTS = 2729760, 450
Audio PTS = 2730210, 450
Audio PTS = 2730660, 450
Audio PTS = 2731110, 450
Audio PTS = 2731560, 450
Audio PTS = 2732010, 450
Audio PTS = 2732460, 450
Audio PTS = 2732910, 450
Audio PTS = 2733360, 450
Audio PTS = 2733810, 450
Audio PTS = 2734260, 450
Audio PTS = 2734710, 450
Audio PTS = 2735160, 450
Audio PTS = 2735610, 450
Audio PTS = 2736060, 450
Audio PTS = 2736510, 450
Audio PTS = 2736960, 450
Audio PTS = 2737410, 450
Audio PTS = 2737860, 450
Audio PTS = 2738310, 450
Audio PTS = 2738760, 450
Audio PTS = 2739210, 450
Audio PTS = 2739660, 450
Audio PTS = 2740110, 450
Audio PTS = 2740560, 450
Audio PTS = 2741010, 450
Audio PTS = 2741460, 450
Audio PTS = 2741910, 450
Audio PTS = 2742360, 450
Audio PTS = 2742810, 450
Audio PTS = 2743260, 450
Audio PTS = 2743710, 450
Audio PTS = 2744160, 450
Audio PTS = 2744610, 450
Audio PTS = 2745060, 450
Audio PTS = 2745510, 450
Audio PTS = 2745960, 450
Audio PTS = 2746410, 450
Audio PTS = 2746860, 450
Audio PTS = 2747310, 450
Audio PTS = 2747760, 450
Audio PTS = 2748210, 450
Audio PTS = 2748660, 450
Audio PTS = 2749110, 450
Audio PTS = 2749560, 450
Audio PTS = 2750010, 450
Audio PTS = 2750460, 450
Audio PTS = 2750910, 450
Audio PTS = 2751360, 450
Audio PTS = 2751810, 450
Audio PTS = 2752260, 450
Audio PTS = 2752710, 450 <--- last audio PTS
packets for pid 0 <0x0000> = 31, first = 1209, last = 52013
packets for pid 31 <0x001f> = 3, first = 8231, last = 47155
packets for pid 256 <0x0100> = 31, first = 1210, last = 52014
packets for pid 4097 <0x1001> = 32, first = 2486, last = 52045
packets for pid 4113 <0x1011> = 33190, first = 2, last = 49311
packets for pid 4352 <0x1100> = 12096, first = 1, last = 51538
packets for pid 4353 <0x1101> = 1362, first = 243, last = 52079
packets for pid 4354 <0x1102> = 1362, first = 245, last = 52080
packets for pid 4355 <0x1103> = 1362, first = 247, last = 52081
packets for pid 4356 <0x1104> = 372, first = 249, last = 50634
packets for pid 4611 <0x1203> = 2240, first = 3807, last = 48772
packets for pid 8191 <0x1fff> = 2, first = 52082, last = 52083
coded pictures = 52, video fields = 0
C:\xfer>
This is a demux of the last 10 Megabytes of a segment from a seamless branching movie. The last audio PTS is 2752710 and the last video PTS is 2749008. The video ends at 2749008 + 3754 = 2752762. The audio ends at 2752710 + 450 = 2753160. 2753160 - 2752762 = 398. 398 / 90000 = 4.42 milliseconds too much audio.
Here's the AC3 track:
C:\xfer>xport -havs 00017tail.m2ts 1 1 2
xport Transport Stream Demuxer 1.00
program = 1, video channel = 1, audio channel = 2
Transport Sync Error, skipped 64 bytes, at 0
Program Number = 0 (0x0000), Program Map PID = 31 (0x001f)
Program Number = 1 (0x0001), Program Map PID = 256 (0x0100)
program descriptor = 0x05, 0x04, 0x48, 0x44, 0x4d, 0x56
program descriptor = 0x88, 0x04, 0x0f, 0xff, 0xff, 0xfc
Video PID = 4113 <0x1011>, type = 0x1b
ES descriptor for stream type 0x1b = 0x05, 0x08, 0x48, 0x44, 0x4d, 0x56, 0xff, 0x1b, 0x61, 0x3f
ES descriptor for stream type 0x80 = 0x05, 0x08, 0x48, 0x44, 0x4d, 0x56, 0xff, 0x80, 0x61, 0xff
Audio PID = 4353 <0x1101>, type = 0x81
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x48, 0x0e, 0x00
ES descriptor for stream type 0x81 = 0x05, 0x04, 0x41, 0x43, 0x2d, 0x33
ES descriptor for stream type 0x81 = 0x81, 0x04, 0x06, 0x29, 0x04, 0x00
Audio PTS = 2497200, 2497200
Audio PTS = 2500080, 2880
Audio Bitrate = 640000, Audio Sampling Rate = 48000
Audio Mode = 3/2, bsid = 6, bsmod = 0
Video PTS(B) = 2553813
Video PTS(B) = 2557567, 3754
Audio PTS = 2502960, 2880
Audio PTS = 2505840, 2880
Audio PTS = 2508720, 2880
Video PTS(P) = 2572582, DTS(P) = 2561321, 3754
Audio PTS = 2511600, 2880
Video PTS(B) = 2565075, 3754
Audio PTS = 2514480, 2880
Video PTS(B) = 2568828, 3753
Video PTS(P) = 2583843, DTS(P) = 2572582, 3754
Audio PTS = 2517360, 2880
Video PTS(B) = 2576336, 3754
Audio PTS = 2520240, 2880
Video PTS(B) = 2580090, 3754
Audio PTS = 2523120, 2880
Video PTS(P) = 2595105, DTS(P) = 2583843, 3753
Audio PTS = 2526000, 2880
Audio PTS = 2528880, 2880
Video PTS(B) = 2587597, 3754
Audio PTS = 2531760, 2880
Video PTS(B) = 2591351, 3754
Audio PTS = 2534640, 2880
Video PTS(P) = 2606366, DTS(P) = 2595105, 3754
Audio PTS = 2537520, 2880
Video PTS(B) = 2598858, 3753
Audio PTS = 2540400, 2880
Audio PTS = 2543280, 2880
Video PTS(B) = 2602612, 3754
Audio PTS = 2546160, 2880
Video PTS(P) = 2617627, DTS(P) = 2606366, 3754
Audio PTS = 2549040, 2880
Video PTS(B) = 2610120, 3754
Audio PTS = 2551920, 2880
Audio PTS = 2554800, 2880
Video PTS(B) = 2613873, 3753
Audio PTS = 2557680, 2880
Video PTS(P) = 2621381, DTS(P) = 2617627, 3754
17 frames before first I-frame
High Profile
Level = 4.1
Audio PTS = 2560560, 2880
Audio PTS = 2563440, 2880
Audio PTS = 2566320, 2880
Video PTS(P) = 2628888, DTS(P) = 2621381, 3754
First Video PTS = 0x0027ffc5
Audio PTS = 2569200, 2880
Video PTS(B) = 2625135, 3754
Video PTS(P) = 2640150, DTS(P) = 2628888, 3753
Audio PTS = 2572080, 2880
Video PTS(B) = 2632642, 3754
Audio PTS = 2574960, 2880
Video PTS(B) = 2636396, 3754
Audio PTS = 2577840, 2880
Audio PTS = 2580720, 2880
Video PTS(P) = 2651411, DTS(P) = 2640150, 3754
Audio PTS = 2583600, 2880
Video PTS(B) = 2643903, 3753
Audio PTS = 2586480, 2880
Video PTS(B) = 2647657, 3754
Audio PTS = 2589360, 2880
Audio PTS = 2592240, 2880
Video PTS(P) = 2662672, DTS(P) = 2651411, 3754
Audio PTS = 2595120, 2880
Video PTS(B) = 2655165, 3754
Audio PTS = 2598000, 2880
Video PTS(B) = 2658918, 3753
Audio PTS = 2600880, 2880
Audio PTS = 2603760, 2880
Video PTS(P) = 2673933, DTS(P) = 2662672, 3754
Audio PTS = 2606640, 2880
Video PTS(B) = 2666426, 3754
Audio PTS = 2609520, 2880
Video PTS(B) = 2670180, 3754
Audio PTS = 2612400, 2880
Video PTS(P) = 2685195, DTS(P) = 2673933, 3753
Audio PTS = 2615280, 2880
Audio PTS = 2618160, 2880
Video PTS(B) = 2677687, 3754
Audio PTS = 2621040, 2880
Video PTS(B) = 2681441, 3754
Audio PTS = 2623920, 2880
First Audio PTS = 0x0027fe70, -341
Video PTS(P) = 2696456, DTS(P) = 2685195, 3754
Audio PTS = 2626800, 2880
Audio PTS = 2629680, 2880
Audio PTS = 2632560, 2880
Video PTS(B) = 2688948, 3753
Audio PTS = 2635440, 2880
Video PTS(B) = 2692702, 3754
Video PTS(P) = 2703963, DTS(P) = 2696456, 3754
Audio PTS = 2638320, 2880
Audio PTS = 2641200, 2880
Video PTS(B) = 2700210, 3754
Audio PTS = 2644080, 2880
Video PTS(P) = 2715225, DTS(P) = 2703963, 3753
Audio PTS = 2646960, 2880
Video PTS(B) = 2707717, 3754
Audio PTS = 2649840, 2880
Audio PTS = 2652720, 2880
Video PTS(B) = 2711471, 3754
Audio PTS = 2655600, 2880
Video PTS(P) = 2726486, DTS(P) = 2715225, 3754
Audio PTS = 2658480, 2880
Video PTS(B) = 2718978, 3753
Audio PTS = 2661360, 2880
Video PTS(B) = 2722732, 3754
Audio PTS = 2664240, 2880
Audio PTS = 2667120, 2880
Video PTS(P) = 2737747, DTS(P) = 2726486, 3754
Audio PTS = 2670000, 2880
Video PTS(B) = 2730240, 3754
Audio PTS = 2672880, 2880
Video PTS(B) = 2733993, 3753
Audio PTS = 2675760, 2880
Audio PTS = 2678640, 2880
Video PTS(P) = 2749008, DTS(P) = 2737747, 3754 <-- last video PTS
Audio PTS = 2681520, 2880
Video PTS(B) = 2741501, 3754
Audio PTS = 2684400, 2880
Video PTS(B) = 2745255, 3754
Audio PTS = 2687280, 2880
Audio PTS = 2690160, 2880
Audio PTS = 2693040, 2880
Audio PTS = 2695920, 2880
Audio PTS = 2698800, 2880
Audio PTS = 2701680, 2880
Audio PTS = 2704560, 2880
Audio PTS = 2707440, 2880
Audio PTS = 2710320, 2880
Audio PTS = 2713200, 2880
Audio PTS = 2716080, 2880
Audio PTS = 2718960, 2880
Audio PTS = 2721840, 2880
Audio PTS = 2724720, 2880
Audio PTS = 2727600, 2880
Audio PTS = 2730480, 2880
Audio PTS = 2733360, 2880
Audio PTS = 2736240, 2880
Audio PTS = 2739120, 2880
Audio PTS = 2742000, 2880
Audio PTS = 2744880, 2880
Audio PTS = 2747760, 2880
Audio PTS = 2750640, 2880 <-- last audio PTS
packets for pid 0 <0x0000> = 31, first = 1209, last = 52013
packets for pid 31 <0x001f> = 3, first = 8231, last = 47155
packets for pid 256 <0x0100> = 31, first = 1210, last = 52014
packets for pid 4097 <0x1001> = 32, first = 2486, last = 52045
packets for pid 4113 <0x1011> = 33190, first = 2, last = 49311
packets for pid 4352 <0x1100> = 12096, first = 1, last = 51538
packets for pid 4353 <0x1101> = 1362, first = 243, last = 52079
packets for pid 4354 <0x1102> = 1362, first = 245, last = 52080
packets for pid 4355 <0x1103> = 1362, first = 247, last = 52081
packets for pid 4356 <0x1104> = 372, first = 249, last = 50634
packets for pid 4611 <0x1203> = 2240, first = 3807, last = 48772
packets for pid 8191 <0x1fff> = 2, first = 52082, last = 52083
coded pictures = 52, video fields = 0
C:\xfer>
The last audio PTS is 2750640 and the last video PTS is again 2749008. The video ends at 2749008 + 3754 = 2752762. The audio ends at 2750640 + 2880 = 2753520. 2753520 - 2752762 = 758. 758 / 90000 = 8.42 milliseconds too much audio.
The problem is, this extra audio adds up over the course of the many segments required for seamless branching. For a 30 segment movie, there could be up to 150 milliseconds too much LPCM and 960 milliseconds too much AC3. Of course, the average will be about half that.
When the clip is being played with A/V sync, the extra audio is taken care of when the decoder starts the next clip. If the timestamps are far enough apart, the video decoder will repeat a frame to maintain A/V sync.
BTW, you can download a utility to cut the end off of .m2ts files so that you can get the ending PTS's faster than demuxing the whole segment.
http://www.w6rz.net/tail.zip
tail <infile> <outfile> <length>
For example:
tail 00017.m2ts 00017tail.m2ts 10000000
Ron
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.