[FFmpeg-trac] #6888(avformat:new): HLS segmenter doesn't cut .m4s files at its expected duration
FFmpeg
trac at avcodec.org
Thu Dec 14 19:05:57 EET 2017
#6888: HLS segmenter doesn't cut .m4s files at its expected duration
------------------------------------+------------------------------------
Reporter: beloko | Owner:
Type: defect | Status: new
Priority: normal | Component: avformat
Version: git-master | Resolution:
Keywords: HLS | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by beloko):
Thank you for this workaround.
I confirm that DASH segmenter is more accurate than HLS segmenter for this
job. All my .m4s files have the expected 4 seconds duration. I checked
each file duration with FFPROBE.
However for now, I'm not able to create a valid HLS streams having video
and audio muxed in the same stream. DASH segmenter create two streams.
First stream have video only and second stream have audio only. Finally
video and audio segments don't have the same durations. Result looks
strange.
Here is the command line where I just replace ''-an'' by ''-c:a
libfdk_aac'' :
{{{
ffmpeg.exe -i
"http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4"
-loglevel verbose -threads 0 -c:a libfdk_aac -sn -c:v libx264 -x264opts
scenecut=-1 -force_key_frames "expr:gte(t,n_forced*4)" -r 25
-min_seg_duration 4000000 -window_size 99999 -t 30 -hls_playlist 1
"C:\inetpub\wwwroot\fmp4_x264\big_bunny.mpd"
}}}
I get three m3u8 files :
. master.m3u8 (supposed to be the main playlist)
{{{
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=488727
media_1.m3u8
}}}
. media_0.m3u8 (as video stream playlist)
{{{
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-MAP:URI="init-stream0.m4s"
#EXTINF:4.000000,
chunk-stream0-00001.m4s
#EXTINF:4.000000,
chunk-stream0-00002.m4s
#EXTINF:4.000000,
chunk-stream0-00003.m4s
#EXTINF:4.000000,
chunk-stream0-00004.m4s
#EXTINF:4.000000,
chunk-stream0-00005.m4s
#EXTINF:4.000000,
chunk-stream0-00006.m4s
#EXTINF:4.000000,
chunk-stream0-00007.m4s
#EXTINF:2.000000,
chunk-stream0-00008.m4s
#EXT-X-ENDLIST
}}}
. media_1.m3u8 (as audio stream playlist)
{{{
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-MAP:URI="init-stream1.m4s"
#EXTINF:3.925333,
chunk-stream1-00001.m4s
#EXTINF:4.010667,
chunk-stream1-00002.m4s
#EXTINF:3.989333,
chunk-stream1-00003.m4s
#EXTINF:4.010667,
chunk-stream1-00004.m4s
#EXTINF:3.989333,
chunk-stream1-00005.m4s
#EXTINF:4.010667,
chunk-stream1-00006.m4s
#EXTINF:3.989333,
chunk-stream1-00007.m4s
#EXTINF:2.074667,
chunk-stream1-00008.m4s
#EXT-X-ENDLIST
}}}
To get a valid HLS stream, all audio segments should have a 4 seconds
duration as expected. And master.m3u8 content should be something like
that :
{{{
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-VERSION:6
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-
ID="media_1.m3u8",NAME="media_1.m3u8",LANGUAGE="en",URI="media_1.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=488727,AUDIO="media_1.m3u8"
media_0.m3u8
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6888#comment:10>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list