[FFmpeg-trac] #8799(undetermined:new): HLS output format does not produce DASH compatible MP4

FFmpeg trac at avcodec.org
Fri Jul 17 18:57:07 EEST 2020


#8799: HLS output format does not produce DASH compatible MP4
-------------------------------------+-------------------------------------
             Reporter:  gordon       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 HLS recommends at least one stream to be available packaged in a transport
 stream.  Otherwise, HLS and DASH overlap.

 The HLS muxer does not produce files that are compatible with DASH per the
 conformance tool at https://conformance.dashif.org/

 It would be very helpful if there was a way to signal the HLS encoder to
 produce DASH compatible fMP4 files

 ----


 I am observing errors like:

 1)      ../src/ValidateAtoms.cpp : 345 : Warning for ISO/IEC 14496-12
 'tkhd' alternateGroup must be 0 not 1

 2)      ../src/ValidateBitStreams.cpp : 478 : Warning for ISO/IEC 14496-12
 Validate_ES_Descriptor: ES_ID should be 0 not 1 in media tracks

 3)      ../src/ValidateBitStreams.cpp : 3333 : Warning: Validate
 DecoderSpecificInfo didn't use 16 bits

 4)      ../src/ValidateAtomList.cpp : 2326 : WARNING: In moov-1:udta-1 -
 unknown/unexpected atom 'meta'

 5)      (2 repetition\s) ### error: ### ../src/ValidateAtomList.cpp : 180
 : ### error: ### 'sidx' found for self-initializing media, violating
 ISO/IEC 23009-1:2012(E), 6.3.5.2: The Indexed Self-Initializing Media
 Segment ... shall carry 'dash' as a compatible brand.

 6)      (2 repetition\s) ### error: sidx-1 ### ../src/ValidateAtoms.cpp :
 3276 : ### error: sidx-1 ### sidx offset 756 is less than starting of
 @indexRange 0, OR sum of sidx offset 756 and sidx size 52 minus 1 is
 greater than ending of @indexRange 756

 7)      ### error: ### ../src/PostprocessData.cpp : 120 : ### error: ###
 Indexing information (sidx/ssix) found in segment 0 (at file absolute
 offset 26735) following a moof, violating: ### error: ###
 ../src/PostprocessData.cpp : 123 : ### error: ### ISO/IEC 23009-1:2012(E),
 8.3.3: All Segment Index ('sidx') and Subsegment Index ('ssix') boxes
 shall be placed before any Movie Fragment ('moof') boxes

 8)      ### error: ### ../src/PostprocessData.cpp : 755 : ### error: ###
 ISO/IEC 23009-1:2012(E), 6.3.4.3: If 'sidx' is present in a Media Segment,
 the first 'sidx' box ... shall document the entire Segment. Violated for
 Media Segment 1. Segment duration 9.156042, Sidx documents 6.016000 for
 track 1, diff 3.140042



 ----


 Ffmpeg version:

 ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --prefix=/usr/local --libdir=/usr/local/lib --extra-
 cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib
 --bindir=/usr/local/bin --disable-doc --disable-ffplay --disable-static
 --enable-shared --enable-openssl --enable-gpl --enable-libass --enable-
 libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus
 --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264
 --enable-libx265 --enable-libaom --enable-nonfree
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100



 ----


 Example of command to produce a transport stream for hls compatibility and
 several mp4 variants for hls and dash:

 ffmpeg -i source.mp4 \
  -an -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0
 -hls_playlist_type vod -profile:v baseline -level 3.0 -b:v 145k -c:v
 libx264 -master_pl_name playlist-a-stream.m3u8 -hls_segment_type mpegts
 -hls_segment_filename output/playlist-a.ts output/playlist-a-segments.m3u8
 \
  \
  -an -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0
 -hls_playlist_type vod -profile:v high -level 3.0 -b:v 145k -c:v libx264
 -master_pl_name playlist-b-stream.m3u8 -hls_segment_type fmp4
 -hls_segment_filename output/playlist-b.mp4
 output/playlist-b-segments.m3u8 \
  \
  -an -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0
 -hls_playlist_type vod -profile:v high -level 3.1 -b:v 730k -c:v libx264
 -master_pl_name playlist-c-stream.m3u8 -hls_segment_type fmp4
 -hls_segment_filename output/playlist-c.mp4
 output/playlist-c-segments.m3u8 \
  \
  -vn -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0
 -hls_playlist_type vod -c:a libfdk_aac -profile:a aac_he_v2
 -hls_segment_type fmp4 -master_pl_name playlist-e-stream.m3u8
 -hls_segment_filename output/playlist-e.m4a
 output/playlist-e-segments.m3u8 \
  \
  -vn -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0
 -hls_playlist_type vod -b:a 96k -c:a libopus -hls_segment_type fmp4
 -strict experimental -hls_segment_filename output/playlist-h.m4a
 -master_pl_name playlist-h-stream.m3u8 output/playlist-h-segments.m3u8

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


More information about the FFmpeg-trac mailing list