[FFmpeg-devel] [PATCH 1/2] avformat/dashenc: Fix the EXT-X-TARGETDURATION as per the hls specification

Jeyapal, Karthick kjeyapal at akamai.com
Thu Dec 21 18:37:10 EET 2017



>On 12/21/17, 9:47 PM, "Steven Liu" <lingjiujianke at gmail.com> wrote:
>
>I cannot sure if this patch can fix the problem playlist target
>duration not same.
>
>MacBook:xxx StevenLiu$ ./ffmpeg -hide_banner -i
>~/bbb_sunflower_1080p_30fps_normal.mp4 -g 150 -r 100 -x264opts
>"scenecut=-1" -f dash -min_seg_duration 1000000 -window_size 99999 -t
>5 -hls_playlist 1 output_Steven.mpd
That is because the key frames are not getting inserted at the 1 second segment duration. 
Please add the option -force_key_frames “expr:gte(t,n_forced*1)” in order to generate segments with exact 1 second duration.

akamai at akamai-VirtualBox:~/ffmpeg$ ./ffmpeg -hide_banner -i ~/Downloads/big_buck_bunny_1080p_stereo.avi -g 150 -r 100 -force_key_frames "expr:gte(t,n_forced*1)" -x264opts "scenecut=-1" -f dash -min_seg_duration 1000000 -window_size 99999 -t 5 -hls_playlist 1 /tmp/output_Steven.mpd
Input #0, avi, from '/home/akamai/Downloads/big_buck_bunny_1080p_stereo.avi':
  Metadata:
    encoder         : MEncoder 2:1.0~rc2-0ubuntu13
  Duration: 00:09:56.46, start: 0.000000, bitrate: 9586 kb/s
    Stream #0:0: Video: msmpeg4v2 (MP42 / 0x3234504D), yuv420p, 1920x1080, 9328 kb/s, 24 fps, 24 tbr, 24 tbn, 24 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 245 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (msmpeg4v2 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (mp3 (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0xe513c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0xe513c0] profile High, level 5.1
[libx264 @ 0xe513c0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - 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=6 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=150 keyint_min=15 scenecut=0 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
[dash @ 0xe4dc60] No bit rate set for stream 0
[dash @ 0xe4dc60] Opening '/tmp/init-stream0.m4s' for writing
[dash @ 0xe4dc60] Opening '/tmp/init-stream1.m4s' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
Bandwidth info not available, set audio and video bitrates
Output #0, dash, to '/tmp/output_Steven.mpd':
  Metadata:
    encoder         : Lavf58.3.100
    Stream #0:0: Video: h264 (libx264), yuv420p, 1920x1080, q=-1--1, 100 fps, 12800 tbn, 100 tbc
    Metadata:
      encoder         : Lavc58.8.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.8.100 aac
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream0-00001.m4s.tmp' for writing drop=0 speed=0.67x    
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream1-00001.m4s.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream0-00002.m4s.tmp' for writing drop=0 speed=0.55x     
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream1-00002.m4s.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream0-00003.m4s.tmp' for writing drop=0 speed=0.552x    
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream1-00003.m4s.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream0-00004.m4s.tmp' for writing drop=0 speed=0.543x    
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream1-00004.m4s.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream0-00005.m4s.tmp' for writing drop=0 speed=0.507x    
[dash @ 0xe4dc60] Opening '/tmp/chunk-stream1-00005.m4s.tmp' for writing
[dash @ 0xe4dc60] Opening '/tmp/output_Steven.mpd.tmp' for writing
frame=  500 fps= 46 q=-1.0 Lsize=N/A time=00:00:05.01 bitrate=N/A dup=380 drop=0 speed=0.462x    
video:1902kB audio:78kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0xe513c0] frame I:5     Avg QP:16.48  size: 61803
[libx264 @ 0xe513c0] frame P:177   Avg QP:20.84  size:  8582
[libx264 @ 0xe513c0] frame B:318   Avg QP:20.45  size:   376
[libx264 @ 0xe513c0] consecutive B-frames: 12.2%  0.8% 24.6% 62.4%
[libx264 @ 0xe513c0] mb I  I16..4: 37.3% 59.0%  3.7%
[libx264 @ 0xe513c0] mb P  I16..4:  2.8% 13.1%  0.1%  P16..4: 12.0%  2.3%  1.8%  0.0%  0.0%    skip:67.9%
[libx264 @ 0xe513c0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  4.8%  0.0%  0.0%  direct: 0.1%  skip:95.1%  L0:76.2% L1:23.6% BI: 0.3%
[libx264 @ 0xe513c0] 8x8 transform intra:78.6% inter:67.3%
[libx264 @ 0xe513c0] coded y,uvDC,uvAC intra: 8.6% 17.6% 3.8% inter: 1.2% 2.5% 0.4%
[libx264 @ 0xe513c0] i16 v,h,dc,p: 67% 20%  9%  4%
[libx264 @ 0xe513c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 44% 16% 37%  0%  0%  0%  0%  0%  0%
[libx264 @ 0xe513c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 11% 10%  6%  8%  8%  7%  6%  7%
[libx264 @ 0xe513c0] i8c dc,h,v,p: 68% 18% 13%  1%
[libx264 @ 0xe513c0] Weighted P-Frames: Y:24.9% UV:13.0%
[libx264 @ 0xe513c0] ref P L0: 78.7% 10.4%  9.2%  1.7%  0.0%
[libx264 @ 0xe513c0] ref B L0: 88.5% 10.4%  1.1%
[libx264 @ 0xe513c0] ref B L1: 96.6%  3.4%
[libx264 @ 0xe513c0] kb/s:3115.94
[aac @ 0xe51d20] Qavg: 467.452
akamai at akamai-VirtualBox:~/ffmpeg$ cat /tmp/media_0.m3u8 
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:1
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-MAP:URI="init-stream0.m4s"
#EXTINF:1.000000,
chunk-stream0-00001.m4s
#EXTINF:1.000000,
chunk-stream0-00002.m4s
#EXTINF:1.000000,
chunk-stream0-00003.m4s
#EXTINF:1.000000,
chunk-stream0-00004.m4s
#EXTINF:1.000000,
chunk-stream0-00005.m4s
#EXT-X-ENDLIST
akamai at akamai-VirtualBox:~/ffmpeg$ cat /tmp/media_1.m3u8 
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:1
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-MAP:URI="init-stream1.m4s"
#EXTINF:0.981333,
chunk-stream1-00001.m4s
#EXTINF:1.002667,
chunk-stream1-00002.m4s
#EXTINF:1.002667,
chunk-stream1-00003.m4s
#EXTINF:1.002667,
chunk-stream1-00004.m4s
#EXTINF:1.010667,
chunk-stream1-00005.m4s
#EXT-X-ENDLIST

Thanks and regards,
Karthick
>
>
>Thanks
>
>Steven




More information about the ffmpeg-devel mailing list