On Mon, 18 Nov 2019, 18:38 gordon, <wgordo...@gmail.com> wrote: > Okay, thank you. I will give that a go. > > -- aside -- > > I thought that the "-force_key_frames expr:gte(t,n_forced*2)" was placing > the key frames for segment boundaries and still allowing the encoder to > place other keyframes where they wanted? I am trying to use h264, h265, > and vp9 so I figured the keyframes not at boundaries would need to be > different for efficiency. > > How do I determine the best (or good) value for "-g" given a particular > source file and target duration for segments? > > On Mon, Nov 18, 2019 at 10:19 AM Dennis Mungai <dmng...@gmail.com> wrote: > > > On Mon, 18 Nov 2019 at 17:31, gordon <wgordo...@gmail.com> wrote: > > > > > Why are the segments for my stream not aligned? The first command > > outputs > > > video segment. The second command outputs an audio segment with the > > > previous video output copied in. > > > > > > Ffmpeg commands are pasted below with the m3u8 outputs. The same > results > > > were observed on ffmpeg 4.2.1 and snapshot > > > > > > /usr/local/bin/ffmpeg -y -loglevel error -f rawvideo -vcodec rawvideo > -s > > > 160x120 -pix_fmt rgb24 -r 12.00 -i - -an -vcodec libx264 -preset medium > > -f > > > hls -an -hls_flags single_file -hls_time 6 -hls_list_size 0 > > > -hls_segment_type mpegts -hls_segment_filename > > > > > > > > > /tmp/973b7b02b6e6486f90d3064527a69701/output/21b79578a1d04533932e32d28f46eb94.ts > > > -hls_playlist_type vod -master_pl_name > > > 21b79578a1d04533932e32d28f46eb94-master.m3u8 -force_key_frames > > > 'expr:gte(t,n_forced*2)' -profile:v baseline -level 3.0 -pix_fmt > yuv420p > > > -vsync cfr -b 145k -pix_fmt yuv420p > > > > > > > > > /tmp/973b7b02b6e6486f90d3064527a69701/output/21b79578a1d04533932e32d28f46eb94-variant.m3u8 > > > > > > #EXTM3U > > > #EXT-X-VERSION:4 > > > #EXT-X-TARGETDURATION:6 > > > #EXT-X-MEDIA-SEQUENCE:0 > > > #EXT-X-PLAYLIST-TYPE:VOD > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:116748@0 > > > 21b79578a1d04533932e32d28f46eb94.ts > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:96256@116748 > > > 21b79578a1d04533932e32d28f46eb94.ts > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:143256@213004 > > > 21b79578a1d04533932e32d28f46eb94.ts > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:97760@356260 > > > 21b79578a1d04533932e32d28f46eb94.ts > > > #EXTINF:5.750000, > > > #EXT-X-BYTERANGE:75764@454020 > > > 21b79578a1d04533932e32d28f46eb94.ts > > > #EXT-X-ENDLIST > > > > > > > > > /usr/local/bin/ffmpeg -y -loglevel error -f s16le -acodec pcm_s16le -ar > > > 44100 -ac 2 -i - -i > > > > > > > > > /tmp/973b7b02b6e6486f90d3064527a69701/output/21b79578a1d04533932e32d28f46eb94.ts > > > -vcodec copy -acodec libfdk_aac -ar 44100 -strict -2 -profile:a > aac_he_v2 > > > -vbr 1 -f hls -hls_flags single_file -hls_time 6 -hls_list_size 0 > > > -hls_segment_type mpegts -hls_segment_filename > > > > > > > > > /tmp/973b7b02b6e6486f90d3064527a69701/output/e3658a88388c4d4da25681956bccb00f.ts > > > -hls_playlist_type vod -master_pl_name > > > e3658a88388c4d4da25681956bccb00f-master.m3u8 -force_key_frames > > > 'expr:gte(t,n_forced*2)' -pix_fmt yuv420p -vsync cfr > > > > > > > > > /tmp/973b7b02b6e6486f90d3064527a69701/output/e3658a88388c4d4da25681956bccb00f-variant.m3u8 > > > > > > #EXTM3U > > > #EXT-X-VERSION:4 > > > #EXT-X-TARGETDURATION:6 > > > #EXT-X-MEDIA-SEQUENCE:0 > > > #EXT-X-PLAYLIST-TYPE:VOD > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:146452@0 > > > e3658a88388c4d4da25681956bccb00f.ts > > > #EXTINF:6.000000, > > > #EXT-X-BYTERANGE:125020@146452 > > > e3658a88388c4d4da25681956bccb00f.ts > > > #EXTINF:5.916667, > > > #EXT-X-BYTERANGE:167320@271472 > > > e3658a88388c4d4da25681956bccb00f.ts > > > #EXTINF:6.083333, > > > #EXT-X-BYTERANGE:133856@438792 > > > e3658a88388c4d4da25681956bccb00f.ts > > > #EXTINF:5.750000, > > > #EXT-X-BYTERANGE:103776@572648 > > > e3658a88388c4d4da25681956bccb00f.ts > > > #EXT-X-ENDLIST > > > > > > > > To ensure alignment, you must use a closed GOP (set via -flags +cgop) and > > specify a GOP size via the -g option passed to your video encoder. > > >
A keyframe distance of 2 is ideal. Simply set -g to 2x your content's frame > rate. If your fps is 30, then -g should be 60. As an example. Secondly, set > your segment length to a multiple of 2. Segment lengths of 6 seconds are > ideal (and it's what Apple recommends in their HLS authoring guidelines). > However, if low latency for a trade off in encoding quality is desired, > then set segment length to 2. _______________________________________________ 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".