[FFmpeg-trac] #7085(undetermined:new): MP4 HLS produce wrong m3u8 with the _init in the first segment with wrong duration

FFmpeg trac at avcodec.org
Thu Mar 15 14:38:32 EET 2018


#7085: MP4 HLS produce wrong m3u8 with the _init in the first segment with wrong
duration
-------------------------------------+-------------------------------------
             Reporter:  loki5100     |                     Type:  defect
               Status:  new          |                 Priority:  critical
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 When I try to do MP4 HLS segment with the instruction below

 {{{
 ffmpeg.exe -i
 "http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4"
 -loglevel verbose -c:a aac -b:a
  128k -c:v hevc -b:v 4977k -maxrate 4977k -bufsize 7466k -x265-params
 "keyint=60:min-keyint=60:open-gop=0:scenecut=0" -r 483570000/16117951 -t
 30 -sn -movflags
 faststart -preset ultrafast -pix_fmt yuv420p -hls_time 4 -hls_segment_type
 fmp4 -hls_list_size 0 -hls_flags single_file -hls_fmp4_init_filename
 C:\temp\ffmpeg\b
 bb_init.mp4 C:\temp\ffmpeg\bbb.m3u8
 ffmpeg version N-90313-gb173e03536 Copyright (c) 2000-2018 the FFmpeg
 developers
   built with gcc 7.3.0 (GCC)
   configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
 bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass
 --enable-libblur
 ay --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
 libshine --enab
 le-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame
 --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-libx265 --en
 able-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp
 --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-
 libmysofa --enabl
 e-libspeex --enable-libxvid --enable-libmfx --enable-amf --enable-
 ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec
 --enable-dxva2 --enabl
 e-avisynth
   libavutil      56.  9.100 / 56.  9.100
   libavcodec     58. 14.100 / 58. 14.100
   libavformat    58. 10.100 / 58. 10.100
   libavdevice    58.  2.100 / 58.  2.100
   libavfilter     7. 13.100 /  7. 13.100
   libswscale      5.  0.102 /  5.  0.102
   libswresample   3.  0.101 /  3.  0.101
   libpostproc    55.  0.100 / 55.  0.100
 [h264 @ 00000088ea170dc0] Reinit context to 1920x1088, pix_fmt: yuv420p
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
 'http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 1
     compatible_brands: isomavc1
     creation_time   : 2013-12-16T17:44:39.000000Z
     title           : Big Buck Bunny, Sunflower version
     artist          : Blender Foundation 2008, Janus Bager Kristensen 2013
     comment         : Creative Commons Attribution 3.0 -
 http://bbb3d.renderfarming.net
     genre           : Animation
     composer        : Sacha Goedegebure
   Duration: 00:10:34.53, start: 0.000000, bitrate: 3481 kb/s
     Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 /
 0x31637661), yuv420p(left), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 2998
 kb/s, 30 fps, 30
 tbr, 30k tbn, 60 tbc (default)
     Metadata:
       creation_time   : 2013-12-16T17:44:39.000000Z
       handler_name    : GPAC ISO Video Handler
     Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo,
 s16p, 160 kb/s (default)
     Metadata:
       creation_time   : 2013-12-16T17:44:42.000000Z
       handler_name    : GPAC ISO Audio Handler
     Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side),
 fltp, 320 kb/s (default)
     Metadata:
       creation_time   : 2013-12-16T17:44:42.000000Z
       handler_name    : GPAC ISO Audio Handler
     Side data:
       audio service type: main
 Matched encoder 'libx265' for codec 'hevc'.
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> hevc (libx265))
   Stream #0:2 -> #0:1 (ac3 (native) -> aac (native))
 Press [q] to stop, [?] for help
 [h264 @ 00000088ea990a80] Reinit context to 1920x1088, pix_fmt: yuv420p
 [graph 0 input from stream 0:0 @ 00000088ea1a3b80] w:1920 h:1080
 pixfmt:yuv420p tb:1/30000 fr:30/1 sar:1/1 sws_param:flags=2
 x265 [info]: HEVC encoder version 2.7+8-613d9f443769
 x265 [info]: build info [Windows][GCC 7.3.0][64 bit] 8bit+10bit
 x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX
 FMA3 BMI2 AVX2
 x265 [info]: Main profile, Level-4 (Main tier)
 x265 [info]: Thread pool created using 8 threads
 x265 [info]: Slices                              : 1
 x265 [info]: frame threads / pool features       : 3 / wpp(34 rows)
 x265 [info]: Coding QT: max CU size, min CU size : 32 / 16
 x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
 x265 [info]: ME / range / subpel / merge         : dia / 57 / 0 / 2
 x265 [info]: Keyframe min / max / scenecut / bias: 60 / 60 / 0 / 5.00
 x265 [info]: Lookahead / bframes / badapt        : 5 / 3 / 0
 x265 [info]: b-pyramid / weightp / weightb       : 1 / 0 / 0
 x265 [info]: References / ref-limit  cu / depth  : 1 / off / off
 x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 0.0 / 32 / 1
 x265 [info]: Rate Control / qCompress            : ABR-4977 kbps / 0.60
 x265 [info]: tools: rd=2 psy-rd=2.00 early-skip rskip tmvp fast-intra
 x265 [info]: tools: strong-intra-smoothing lslices=6 deblock
 *** 2 dup!
 [graph_1_in_0_2 @ 00000088ea98e740] tb:1/48000 samplefmt:fltp
 samplerate:48000 chlayout:0x60f
 [aac @ 00000088eac224c0] Using a PCE to encode channel layout
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb_init.mp4' for writing
 Output #0, hls, to 'C:\temp\ffmpeg\bbb.m3u8':
   Metadata:
     major_brand     : isom
     minor_version   : 1
     compatible_brands: isomavc1
     composer        : Sacha Goedegebure
     title           : Big Buck Bunny, Sunflower version
     artist          : Blender Foundation 2008, Janus Bager Kristensen 2013
     comment         : Creative Commons Attribution 3.0 -
 http://bbb3d.renderfarming.net
     genre           : Animation
     encoder         : Lavf58.10.100
     Stream #0:0(und): Video: hevc (libx265), 1 reference frame,
 yuv420p(progressive, left), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 4977
 kb/s, 30 fps, 998795.00 t
 bn, 30 tbc (default)
     Metadata:
       creation_time   : 2013-12-16T17:44:39.000000Z
       handler_name    : GPAC ISO Video Handler
       encoder         : Lavc58.14.100 libx265
     Stream #0:1(und): Audio: aac (LC), 48000 Hz, 5.1(side), fltp, delay
 1024, 128 kb/s (default)
     Metadata:
       creation_time   : 2013-12-16T17:44:42.000000Z
       handler_name    : GPAC ISO Audio Handler
       encoder         : Lavc58.14.100 aac
     Side data:
       audio service type: main
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed=2.24x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed=1.85x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed= 1.8x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed=1.76x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed=1.77x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing2
 drop=0 speed=1.85x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 No more output streams to write to, finishing.:29.26 bitrate=N/A dup=2
 drop=0 speed=1.89x
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m4s' for writing
 [hls @ 00000088ea22d800] Opening 'C:\temp\ffmpeg\bbb.m3u8.tmp' for writing
 EXT-X-MEDIA-SEQUENCE:0
 frame=  901 fps= 56 q=-0.0 Lsize=N/A time=00:00:30.01 bitrate=N/A dup=2
 drop=0 speed=1.86x
 video:23439kB audio:470kB subtitle:0kB other streams:0kB global
 headers:2kB muxing overhead: unknown
 Input file #0
 (http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4):
   Input stream #0:0 (video): 910 packets read (11573775 bytes); 901 frames
 decoded;
   Input stream #0:1 (audio): 21 packets read (10080 bytes);
   Input stream #0:2 (audio): 946 packets read (1210880 bytes); 946 frames
 decoded (1453056 samples);
   Total: 1877 packets (12794735 bytes) demuxed
 Output file #0 (C:\temp\ffmpeg\bbb.m3u8):
   Output stream #0:0 (video): 901 frames encoded; 901 packets muxed
 (24001991 bytes);
   Output stream #0:1 (audio): 1407 frames encoded (1440000 samples); 1408
 packets muxed (481577 bytes);
   Total: 2309 packets (24483568 bytes) muxed
 x265 [info]: frame I:     16, Avg QP:19.38  kb/s: 54461.61
 x265 [info]: frame P:    227, Avg QP:20.80  kb/s: 15128.22
 x265 [info]: frame B:    658, Avg QP:23.70  kb/s: 2210.48
 x265 [info]: consecutive B-frames: 7.4% 0.8% 5.3% 86.4%

 encoded 901 frames in 16.13s (55.87 fps), 6392.88 kb/s, Avg QP:22.90
 [aac @ 00000088eac224c0] Qavg: 134.647 
 }}}

 then the resulting m3u8 is wrong because it's add the init.mp4 segment in
 the first segment like below :


 {{{
 #EXTM3U
 #EXT-X-VERSION:7
 #EXT-X-TARGETDURATION:6
 #EXT-X-MEDIA-SEQUENCE:0
 #EXT-X-MAP:URI="C:\temp\ffmpeg\bbb.m4s",BYTERANGE="3688 at 0"
 #EXTINF:5.999610,
 #EXT-X-BYTERANGE:3688 at 0
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:7948692 at 3688
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-2932786 at 7952380
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1690139 at 5019594
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1355411 at 3329455
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1147050 at 1974044
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:1131975 at 826994
 bbb.m4s
 #EXTINF:0.033331,
 #EXT-X-BYTERANGE:-1958593 at 1958969
 bbb.m4s
 #EXT-X-ENDLIST
 }}}

 and it's must be :

 {{{
 #EXTM3U
 #EXT-X-VERSION:7
 #EXT-X-TARGETDURATION:6
 #EXT-X-MEDIA-SEQUENCE:0
 #EXT-X-MAP:URI="C:\temp\ffmpeg\bbb.m4s",BYTERANGE="3688 at 0"
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:7948692 at 3688
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-2932786 at 7952380
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1690139 at 5019594
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1355411 at 3329455
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:-1147050 at 1974044
 bbb.m4s
 #EXTINF:3.999740,
 #EXT-X-BYTERANGE:1131975 at 826994
 bbb.m4s
 #EXTINF:0.033331,
 #EXT-X-BYTERANGE:-1958593 at 1958969
 bbb.m4s
 #EXT-X-ENDLIST
 }}}

 and after we discover that we miss 5.999610 (this is the duration that was
 set for the first segment that was the _init)

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7085>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list