Hi German, Thanks for your reply.
> Do not use -ss and -t parameters simultaneously. FFmpeg cannot form an > output container well in that case. > I also think the -ss and -t options are the root cause of my issues, but I cannot see another way to generate only some segments (or are there "start/end segment index" options ?) > If you just need to create HLS segments from some source file you can use > the "segment" muxer. > ffmpeg -i source.mp4 -vcodec copy -acodec copy -f ssegment -segment_list > chunklist.m3u8 -segment_time 4 media_%04d.ts > Oh, I didn't know about the "segment" muxer. Thanks > If you want to create HLS segments of exact length, then you must > transcode your source file and provide exact frame rate -r and exact GOP -g > . > As you can see from my previous example, I was already reencoding the streams, with -g 25, but I tried the command you suggested, as follows: ffmpeg -i source.ts -r 25 -g 25 -c:v libx264 -preset fast -crf 24 -c:a aac -b:a 128k -f segment -segment_list sample_seg.m3u8 -segment_time 4 sample_seg-%%04d.ts The result is playable but strangely enough, it has audio drops a bit before the segment change (every 4 seconds), while the version with the hls muxer hadn't. I tried to compare the files generated by the 2 muxers using almost identical commands, namely: ffmpeg -i source.ts -c:v libx264 -b:v 1000k -c:a aac -b:a 128k -r 25 -g 25 -f hls -hls_time 4 -hls_playlist_type vod out_hls.m3u8 ffmpeg -i source.ts -c:v libx264 -b:v 1000k -c:a aac -b:a 128k -r 25 -g 25 -f segment -segment_time 4 -segment_list out_seg.m3u8 out_seg%%d.ts and indeed, the generated segments are different: 582424 out_hls0.ts 613068 out_seg0.ts 764972 out_hls1.ts 805580 out_seg1.ts 401004 out_hls2.ts 421120 out_seg2.ts 662700 out_hls3.ts 697856 out_seg3.ts 524520 out_hls4.ts 454396 out_seg4.ts The ffmpeg doc for the segment muxer says the hls muxer "provides a more specific implementation for HLS segmentation", but it seems to be completely different. Even the durations of the files are different: a) with -f hls: #EXT-X-TARGETDURATION:5 #EXTINF:4.160000, out_hls0.ts #EXTINF:4.640000, out_hls1.ts #EXTINF:3.320000, out_hls2.ts #EXTINF:4.200000, out_hls3.ts #EXTINF:4.320000, out_hls4.ts b) with -f segment: #EXT-X-TARGETDURATION:5 #EXTINF:4.240000, out_seg0.ts #EXTINF:4.640000, out_seg1.ts #EXTINF:3.320000, out_seg2.ts #EXTINF:4.200000, out_seg3.ts #EXTINF:3.640000, out_seg4.ts So although I'm forcing keyframes, the durations are actually not 4 seconds (the EXT-X-TARGETDURATION field even says 5) Is there another way to force all segments to be exactly the same duration ? Kind regards, Vincent _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".