Trying to do HLS watermarking installed ffmpeg on mac to convert from mp4 to hls in one go: ffmpeg -y -i myvideo.mp4 -t 00:02:00.000 -c:a libmp3lame -ar 48000 -ab 64k -c:v libx264 -b:v 96k -flags -global_header -map 0 -f segment -segment_list myvideo.m3u8 -segment_format mpegts str%05d.ts Without specifying anything ffmpeg -y -i myvideo.mp4 -t 00:02:00.000 -hls_list_size 0 -hls_time 20 myvideo.m3u8 Now again for just one segment: ffmpeg -y -i myvideo.mp4 -hls_list_size 0 -hls_time 10 -t 00:00:16.360 wm0.ts ffmpeg -i myvideo0.ts -i logo.png -c:a copy -c:v libx264 -b:v 96k -filter_complex "overlay=25:25" wm0.ts to convert only part of the file (from 1 minute 20.789 seconds): ffmpeg -i str00002.ts -c:a libmp3lame -ar 48000 -ab 64k -c:v libx264 -t 00:00:01.080 -b:v 96k -flags -global_header -map 0 -f segment -segment_list myvideo_watermarked.m3u8 -segment_format mpegts wm%05d.ts ffmpeg -i myvideo0.ts -c:a copy -c:v copy wm0.ts Using image ffmpeg -i str00000.ts -i logo.png -c:a copy -c:v libx264 -b:v 96k -filter_complex "overlay=25:25" wm00000.ts ffmpeg -i str00010.ts -i logo.png -c:a copy -c:v libx264 -b:v 96k -filter_complex "overlay=25:25" wm00010.ts Using subtitles ffmpeg -i str00000.ts -i logo.png -c:a copy -c:v copy wm00000.ts ffmpeg -i str00002.ts -i logo.png -c:a libmp3lame -ar 48000 -ab 64k -c:v libx264 -b:v 96k -filter_complex "overlay=25:25" wm.mp4 then repeatedly loaded: http://localhost:3000/hls/myvideo.m3u8 Attempt 10 Start: Run: ffmpeg -y -i myvideo.mp4 -hls_list_size 0 -hls_time 10 -t 00:01:00.000 myvideo.m3u8 To get base HLS transcode Then: ffmpeg -y -i myvideo.mp4 -i logo.png -filter_complex "overlay=25:25" -hls_list_size 0 -hls_time 10 -t 00:01:00.000 myvideo_watermarked.m3u8 That should give us the same video twice, once without watermark and once with. The idea would then be to swap some segments around. Turns out the two transcode commands result in differently segmented video. So segmentation is not purely determined by input video and HLS flags. Attempt 11 ffmpeg -y -i myvideo.mp4 -t 00:01:00.000 -c:a libmp3lame -ar 48000 -ab 64k -c:v libx264 -b:v 96k -flags -global_header -map 0 -f segment -segment_list myvideo.m3u8 -segment_format mpegts str%05d.ts ffmpeg -y -i myvideo.mp4 -i logo.png -t 00:00:09.680 -c:a libmp3lame -ar 48000 -ab 64k -c:v libx264 -b:v 96k -flags -global_header -map 0 -f segment -segment_format mpegts -filter_complex "overlay=25:25" wm%05d.ts Robin Wilding solution: ffmpeg -i myvideo0.ts -i logo.png -mpegts_copyts 1 -filter_complex "overlay=25:25" -copyts -c:a copy -c:v libx264 -pix_fmt yuv420p -b:v 400K -r 12 wm0.ts