[FFmpeg-trac] #4210(avformat:new): First HLS segment missing from the m3u8 file

FFmpeg trac at avcodec.org
Sat Dec 27 15:39:52 CET 2014


#4210: First HLS segment missing from the m3u8 file
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:  defect
  ElGalloGringo                      |                 Priority:  normal
               Status:  new          |                  Version:
            Component:  avformat     |  unspecified
             Keywords:  hls          |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug: I have a process where I take an MP4 file generated on
 an iOS device (H264 Main 3.1), upload it to a server and then have a
 server script convert the videos to HLS. I do this is a two step process.
 I first convert the MP4 to single TS files at the various target bitrates
 with H264 Baseline 3.0 and second use the HLS segmenter to segment each TS
 file. I then make the master playlist from the individual qualities.

 The strangest thing is that it actually creates all the segments
 appropriately, it just isn't including the zero-th segment in the .m3u8
 file. Fore example, with the commands below, it results in a file called
 stream_110k0.ts, but the contents of the resultant m3u8 file is:
 {{{
 #EXTM3U
 #EXT-X-VERSION:3
 #EXT-X-TARGETDURATION:7
 #EXT-X-MEDIA-SEQUENCE:1
 #EXTINF:6.300000,
 stream_110k1.ts
 #EXTINF:6.200000,
 stream_110k2.ts
 #EXTINF:6.200000,
 stream_110k3.ts
 #EXTINF:5.800000,
 stream_110k4.ts
 #EXTINF:0.300000,
 stream_110k5.ts
 #EXT-X-ENDLIST
 }}}

 I have been looking through the code to see if I could see where the
 problem was occurring, and it looks like it might have something to do
 with whichever part of the code is calling hls_write_packet in hlsenc.c.
 The problem is that it looks like hls_write_packet corresponds to a plugin
 system where write_packet is defined as hls_write_packet and I haven't had
 the time to go back and try to sort out how that interface works. I think
 whatever is calling hls_write_packet is not calling this with the zero-th
 segment.

 How to reproduce:

 FIRST STEP
 {{{
 %/opt/pichme/bin/ffmpeg -y -i /tmp/37A10519-AB0B-
 4DBB-B654-0FE90A901B0D.mp420141227-16687-8hxt8t -c:v libx264 -preset
 veryslow -profile:v baseline -level 3.0 -mpegts_copyts 1 -b:v 110k
 -minrate 110k -maxrate 110k -bufsize 110k -r 10 -g 10 -pass 1 -passlogfile
 37A10519-AB0B-4DBB-B654-0FE90A901B0D_110k -c:a libfdk_aac -b:a 48k -f mp4
 /dev/null && /opt/pichme/bin/ffmpeg -y -i /tmp/37A10519-AB0B-
 4DBB-B654-0FE90A901B0D.mp420141227-16687-8hxt8t -c:v libx264 -preset
 veryslow -profile:v baseline -level 3.0 -mpegts_copyts 1 -b:v 110k
 -minrate 110k -maxrate 110k -bufsize 110k -r 10 -g 10 -pass 2 -passlogfile
 37A10519-AB0B-4DBB-B654-0FE90A901B0D_110k -c:a libfdk_aac -b:a 48k -vbsf
 h264_mp4toannexb /tmp/37A10519-AB0B-4DBB-B654-0FE90A901B0D_110k.ts
 ffmpeg version git-2014-11-13-5c805d6 Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Nov 13 2014 20:31:40 with gcc 4.4.7 (GCC) 20120313 (Red Hat
 4.4.7-4)
 }}}

 SECOND STEP
 {{{
 %/opt/pichme/bin/ffmpeg -i /tmp/37A10519-AB0B-
 4DBB-B654-0FE90A901B0D_110k.ts -c copy -map 0 -mpegts_copyts 1 -f hls
 -hls_time 6  /tmp/37A10519-AB0B-4DBB-B654-0FE90A901B0D/stream_110k.m3u8
 ffmpeg version git-2014-11-13-5c805d6 Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Nov 13 2014 20:31:40 with gcc 4.4.7 (GCC) 20120313 (Red Hat
 4.4.7-4)
 }}}

 If you need the actual MP4 file that is causing this, let me know and I
 will make it available.

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


More information about the FFmpeg-trac mailing list