[x264-devel] Encoding for HLS but have a DTS problem

Georgeus Roger technical.center at hotmail.com
Sat Sep 15 13:57:00 CEST 2012


Hi
I'm new with this sector I make a live stream server  I use vlc with x264 to transcod from multicast ip (mpeg2) to(h264) when I launch vlc instance I get this error

libdvbpsi error (PSI decoder): TS discontinuity (received 3, expected 0) for PID 18
x264 [warning]: invalid DTS: PTS is less than DTS
x264 [warning]: invalid DTS: PTS is less than DTS
x264 [warning]: invalid DTS: PTS is less than DTS

Can any body help me please ?

Best regards
Roger

From: Luuk D. Jansen OP 
Sent: Saturday, September 15, 2012 12:33 PM
To: x264-devel at videolan.org 
Subject: Re: [x264-devel] Encoding for HLS but have a DTS problem

I am trying to encode video for HTS live streaming, but there are problems with validating the stream using Apple Media Validator (mediastreamvalidator).
(my test file: http://dominicansinteractive.idoms.org/media/9536/playlist.m3u8)

The output is:
--------------------------------------------------------------------------------
http://dominicansinteractive.idoms.org/media/9536/199/prog_index.m3u8
--------------------------------------------------------------------------------

Playlist Validation: 

	OK

Segments:

segment_00000.ts:

ERROR: (-1) Decreasing DTS were detected in track 0
ERROR: (-1) Decreasing DTS were detected in track 1

Average segment duration: 8.07 seconds
Average segment bitrate: 2155094.67 bps
Average segment structural overhead: 206525.83 bps (9.58 %)

---

The second segment doesn't seem to have the problem:
[mpegts @ 0x1d78120] Format mpegts probed with size=2048 and score=100
[mpegts @ 0x1d78120] stream=0 stream_type=1b pid=100 prog_reg_desc=
[mpegts @ 0x1d78120] stream=1 stream_type=f pid=101 prog_reg_desc=
[mpegts @ 0x1d78120] File position before avformat_find_stream_info() is 0
[h264 @ 0x1d7c1c0] Current profile doesn't provide more RBSP data in PPS, skipping
[h264 @ 0x1d7c1c0] no picture 
[h264 @ 0x1d7c1c0] Current profile doesn't provide more RBSP data in PPS, skipping
    Last message repeated 3 times
[mpegts @ 0x1d78120] max_analyze_duration 5000000 reached at 5013333
[mpegts @ 0x1d78120] File position after avformat_find_stream_info() is 0

---

This seems to be a serious problem for HLS, so I am looking if there is a way to fix this.
I think it might have to do with the x264 encoder because of the message "Encoder did not produce proper pts, making some up." FFMPEG puts out in the console.

When looking with FFMPEG at the encoded file I get (encoder output/command at the bottom of the email):

ffmpeg -loglevel 99 -i encoded.ts 
ffmpeg version N-37783-gdf3a96c Copyright (c) 2000-2012 the FFmpeg developers
  built on Jul  4 2012 07:44:52 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvpx --enable-libfaac --enable-nonfree
  libavutil      51. 63.100 / 51. 63.100
  libavcodec     54. 32.100 / 54. 32.100
  libavformat    54. 14.100 / 54. 14.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     3.  0.101 /  3.  0.101
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[mpegts @ 0x2023120] Format mpegts probed with size=2048 and score=100
[mpegts @ 0x2023120] stream=0 stream_type=1b pid=100 prog_reg_desc=
[mpegts @ 0x2023120] stream=1 stream_type=f pid=101 prog_reg_desc=
[mpegts @ 0x2023120] File position before avformat_find_stream_info() is 0
[h264 @ 0x20271c0] Current profile doesn't provide more RBSP data in PPS, skipping
[h264 @ 0x20271c0] no picture 
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 143280 in que
    Last message repeated 6 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 158640 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 175920 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 193200 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 210480 in que
    Last message repeated 7 times
[h264 @ 0x20271c0] Current profile doesn't provide more RBSP data in PPS, skipping
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 227760 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 245040 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 262320 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 279600 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 296880 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 314160 in que
    Last message repeated 7 times
[h264 @ 0x20271c0] Current profile doesn't provide more RBSP data in PPS, skipping
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 331440 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 348720 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 366000 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 383280 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 400560 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 417840 in que
    Last message repeated 6 times
[h264 @ 0x20271c0] Current profile doesn't provide more RBSP data in PPS, skipping
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 433200 in que
    Last message repeated 6 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 448560 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 465840 in que
    Last message repeated 6 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 481200 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 498480 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 515760 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 533040 in que
    Last message repeated 6 times
[h264 @ 0x20271c0] Current profile doesn't provide more RBSP data in PPS, skipping
[mpegts @ 0x2023120] first_dts 124080 not matching first dts 548400 in que
    Last message repeated 7 times
[mpegts @ 0x2023120] max_analyze_duration 5000000 reached at 5000000
[mpegts @ 0x2023120] File position after avformat_find_stream_info() is 0

And when at the first segmented file:
ffmpeg -loglevel 99 -i segment_00000.ts 
ffmpeg version N-37783-gdf3a96c Copyright (c) 2000-2012 the FFmpeg developers
  built on Jul  4 2012 07:44:52 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvpx --enable-libfaac --enable-nonfree
  libavutil      51. 63.100 / 51. 63.100
  libavcodec     54. 32.100 / 54. 32.100
  libavformat    54. 14.100 / 54. 14.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     3.  0.101 /  3.  0.101
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[mpegts @ 0x1a0b120] Format mpegts probed with size=2048 and score=100
[mpegts @ 0x1a0b120] stream=0 stream_type=1b pid=100 prog_reg_desc=
[mpegts @ 0x1a0b120] stream=1 stream_type=f pid=101 prog_reg_desc=
[mpegts @ 0x1a0b120] File position before avformat_find_stream_info() is 0
[mpegts @ 0x1a0b120] Invalid timestamps stream=0, pts=1920, dts=8589929312, size=2355
[mpegts @ 0x1a0b120] Invalid timestamps stream=0, pts=16320, dts=8589932912, size=3203
[h264 @ 0x1a0f1c0] Current profile doesn't provide more RBSP data in PPS, skipping
[h264 @ 0x1a0f1c0] no picture 
[h264 @ 0x1a0f1c0] Current profile doesn't provide more RBSP data in PPS, skipping
    Last message repeated 3 times
[mpegts @ 0x1a0b120] max_analyze_duration 5000000 reached at 5013333
[mpegts @ 0x1a0b120] File position after avformat_find_stream_info() is 0

This problem does not occur with the BASELINE profile, but does with MAIN.


The command I use for encoding is:
ffmpeg, -i, [path]/test.mov, -y, -f, mpegts, -acodec, aac, -strict, -2, -ar, 48000, -b:a, 128000, -s, 960x540, -vcodec, libx264, -b:v, 1200000, -aspect, 960:540, -r, 25, -level, 3.1, -vprofile, main, -flags, +loop, -cmp, +chroma, -partitions, +parti4x4+partp8x8+partb8x8, -subq, 5, -trellis, 1, -refs, 1, -coder, 0, -me_range, 16, -keyint_min, 25, -sc_threshold, 40, -i_qfactor, 0.71, -bt, 200k, -maxrate, 1200000, -bufsize, 1200000, -rc_eq, 'blurCplx^(1-qComp)', -qcomp, 0.6, -qmin, 10, -qmax, 51, -qdiff, 4, -level, 30, -g, 30, -async, 2, [path]/encoded.ts

08:40:29,843 DEBUG ~ FFMPEG(1):   libavutil      51. 63.100 / 51. 63.100
08:40:29,843 DEBUG ~ FFMPEG(1):   libavcodec     54. 32.100 / 54. 32.100
08:40:29,843 DEBUG ~ FFMPEG(1):   libavformat    54. 14.100 / 54. 14.100
08:40:29,843 DEBUG ~ FFMPEG(1):   libavdevice    54.  0.100 / 54.  0.100
08:40:29,843 DEBUG ~ FFMPEG(1):   libavfilter     3.  0.101 /  3.  0.101
08:40:29,844 DEBUG ~ FFMPEG(1):   libswscale      2.  1.100 /  2.  1.100
08:40:29,844 DEBUG ~ FFMPEG(1):   libswresample   0. 15.100 /  0. 15.100
08:40:29,844 DEBUG ~ FFMPEG(1):   libpostproc    52.  0.100 / 52.  0.100
08:40:30,033 DEBUG ~ FFMPEG(1): Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '[path]/test.mov':
08:40:30,033 DEBUG ~ FFMPEG(1):   Metadata:
08:40:30,033 DEBUG ~ FFMPEG(1):     major_brand     : qt  
08:40:30,033 DEBUG ~ FFMPEG(1):     minor_version   : 537199360
08:40:30,035 DEBUG ~ FFMPEG(1):     compatible_brands: qt  
08:40:30,035 DEBUG ~ FFMPEG(1):     creation_time   : 2011-12-05 10:54:24
08:40:30,036 DEBUG ~ FFMPEG(1):     timecode        : 00:00:00:00
08:40:30,036 DEBUG ~ FFMPEG(1):   Duration: 00:00:24.20, start: 0.000000, bitrate: 9912 kb/s
08:40:30,037 DEBUG ~ FFMPEG(1):     Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080, 9777 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
08:40:30,037 DEBUG ~ FFMPEG(1):     Metadata:
08:40:30,037 DEBUG ~ FFMPEG(1):       creation_time   : 2011-12-05 10:56:28
08:40:30,037 DEBUG ~ FFMPEG(1):       handler_name    : Apple Video Media Handler
08:40:30,038 DEBUG ~ FFMPEG(1):     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 129 kb/s
08:40:30,038 DEBUG ~ FFMPEG(1):     Metadata:
08:40:30,038 DEBUG ~ FFMPEG(1):       creation_time   : 2011-12-05 10:56:28
08:40:30,038 DEBUG ~ FFMPEG(1):       handler_name    : Apple Sound Media Handler
08:40:30,038 DEBUG ~ FFMPEG(1):     Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
08:40:30,038 DEBUG ~ FFMPEG(1):     Metadata:
08:40:30,038 DEBUG ~ FFMPEG(1):       creation_time   : 2011-12-05 10:56:28
08:40:30,039 DEBUG ~ FFMPEG(1):       handler_name    : Time Code Media Handler
08:40:30,039 DEBUG ~ FFMPEG(1):       timecode        : 00:00:00:00
08:40:30,092 DEBUG ~ FFMPEG(1): [graph 0 input from stream 0:0 @ 0x1c17180] w:1920 h:1080 pixfmt:yuv420p tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
08:40:30,092 DEBUG ~ FFMPEG(1): [output stream 0:0 @ 0x1c033a0] No opaque field provided
08:40:30,110 DEBUG ~ FFMPEG(1): [scaler for output stream 0:0 @ 0x1c18040] w:1920 h:1080 fmt:yuv420p sar:0/1 -> w:960 h:540 fmt:yuv420p sar:0/1 flags:0x4
08:40:30,110 DEBUG ~ FFMPEG(1): [graph 1 input from stream 0:1 @ 0x1c53440] tb:1/48000 samplefmt:s16 samplerate:48000 chlayout:0x3
08:40:30,110 DEBUG ~ FFMPEG(1): -async is forwarded to lavfi similarly to -af aresample=min_comp=0.001:min_hard_comp=0.100000:max_soft_comp=0.000042.
08:40:30,122 DEBUG ~ FFMPEG(1): [graph 1 aresample for input stream 0:1 @ 0x1c36880] chl:stereo fmt:s16 r:48000Hz -> chl:stereo fmt:flt r:48000Hz
08:40:30,142 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] using SAR=1/1
08:40:30,142 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] frame MB size (60x34) > level limit (1620)
08:40:30,142 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] DPB size (4 frames, 3133440 bytes) > level limit (3 frames, 3110400 bytes)
08:40:30,142 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] MB rate (51000) > level limit (40500)
08:40:30,170 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] using cpu capabilities: MMX2 SSE2Slow SlowCTZ
08:40:30,182 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] profile Main, level 3.0
08:40:30,235 DEBUG ~ FFMPEG(1): [mpegts @ 0x1be3540] muxrate VBR, pcr every 2 pkts, sdt every 200, pat/pmt every 40 pkts
08:40:30,235 DEBUG ~ FFMPEG(1): Output #0, mpegts, to '[path]/encoded.ts':
08:40:30,235 DEBUG ~ FFMPEG(1):   Metadata:
08:40:30,235 DEBUG ~ FFMPEG(1):     major_brand     : qt  
08:40:30,235 DEBUG ~ FFMPEG(1):     minor_version   : 537199360
08:40:30,235 DEBUG ~ FFMPEG(1):     compatible_brands: qt  
08:40:30,235 DEBUG ~ FFMPEG(1):     timecode        : 00:00:00:00
08:40:30,235 DEBUG ~ FFMPEG(1):     encoder         : Lavf54.14.100
08:40:30,235 DEBUG ~ FFMPEG(1):     Stream #0:0(eng): Video: h264, yuv420p, 960x540 [SAR 1:1 DAR 16:9], q=10-51, 1200 kb/s, 90k tbn, 25 tbc
08:40:30,235 DEBUG ~ FFMPEG(1):     Metadata:
08:40:30,235 DEBUG ~ FFMPEG(1):       creation_time   : 2011-12-05 10:56:28
08:40:30,235 DEBUG ~ FFMPEG(1):       handler_name    : Apple Video Media Handler
08:40:30,236 DEBUG ~ FFMPEG(1):     Stream #0:1(eng): Audio: aac, 48000 Hz, stereo, flt, 128 kb/s
08:40:30,236 DEBUG ~ FFMPEG(1):     Metadata:
08:40:30,236 DEBUG ~ FFMPEG(1):       creation_time   : 2011-12-05 10:56:28
08:40:30,236 DEBUG ~ FFMPEG(1):       handler_name    : Apple Sound Media Handler
08:40:30,236 DEBUG ~ FFMPEG(1): Stream mapping:
08:40:30,236 DEBUG ~ FFMPEG(1):   Stream #0:0 -> #0:0 (h264 -> libx264)
08:40:30,236 DEBUG ~ FFMPEG(1):   Stream #0:1 -> #0:1 (aac -> aac)

[...]

08:40:55,398 DEBUG ~ FFMPEG(1): video:3121kB audio:359kB subtitle:0 global headers:0kB muxing overhead 11.132085%
08:40:55,407 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] frame I:21    Avg QP:21.57  size: 88153
08:40:55,407 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] frame P:233   Avg QP:22.74  size:  5560
08:40:55,407 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] frame B:351   Avg QP:27.45  size:   141
08:40:55,407 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] consecutive B-frames: 21.7%  2.0%  3.0% 73.4%
08:40:55,407 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] mb I  I16..4: 54.5%  0.0% 45.5%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] mb P  I16..4:  4.7%  0.0%  1.3%  P16..4: 24.6%  3.5%  0.8%  0.0%  0.0%    skip:65.1%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] mb B  I16..4:  0.1%  0.0%  0.1%  B16..8:  0.5%  0.1%  0.0%  direct: 0.6%  skip:98.6%  L0:32.3% L1:47.1% BI:20.6%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] coded y,uvDC,uvAC intra: 59.4% 5.8% 0.4% inter: 5.4% 3.0% 0.0%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] i16 v,h,dc,p: 58% 16% 21%  4%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 21% 17%  5% 10%  7%  5%  5% 10%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] i8c dc,h,v,p: 94%  3%  3%  0%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] Weighted P-Frames: Y:13.7% UV:3.4%
08:40:55,422 DEBUG ~ FFMPEG(1): [libx264 @ 0x1be3cc0] kb/s:1056.61

For segmenting is:
ffmpeg, -i,[path]encoded.ts, -y, -c, copy, -flags, global_header, -map, 0, -f, segment, -segment_time, 10, -segment_list, [path]/fileList.txt, -segment_format, mpegts, [path]/segment_%05d.ts]

The file I use for testing can be found at:
http://test.idoms.org/public/testdata/test-movie/test.mov

The output of FFMPEG for this file seems ok as it doesn't give a DTS error (ffmpeg -loglevel 99 -i test.mov).

The command I use for encoding is:
ffmpeg -i ./test.mov -y -f mpegts -acodec aac -strict -2, -ar, 48000, -b:a, 128000, -s, 960x540, -vcodec, libx264, -b:v, 1200000, -aspect, 960:540, -r, 25, -level, 3.1, -vprofile, main, -flags, +loop, -cmp, +chroma, -partitions, +parti4x4+partp8x8+partb8x8, -subq, 5, -trellis, 1, -refs, 1, -coder, 0, -me_range, 16, -keyint_min, 25, -sc_threshold, 40, -i_qfactor, 0.71, -bt, 200k, -maxrate, 1200000, -bufsize, 1200000, -rc_eq, 'blurCplx^(1-qComp)', -qcomp, 0.6, -qmin, 10, -qmax, 51, -qdiff, 4, -level, 30, -g, 30, -async, 2, ./encoded.ts

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x264-devel/attachments/20120909/7cf2924a/attachment-0001.html>




Is there anybody who has some idea to find out what the problem could be?


--------------------------------------------------------------------------------
_______________________________________________
x264-devel mailing list
x264-devel at videolan.org
http://mailman.videolan.org/listinfo/x264-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x264-devel/attachments/20120915/044e38d5/attachment-0001.html>


More information about the x264-devel mailing list