@@ -10,7 +10,9 @@ use std::{
1010} ;
1111use sysinfo:: Disks ;
1212
13- use crate :: video:: h264:: { H264Encoder , H264EncoderBuilder , H264EncoderError , H264Preset } ;
13+ use crate :: video:: h264:: {
14+ DEFAULT_KEYFRAME_INTERVAL_SECS , H264Encoder , H264EncoderBuilder , H264EncoderError , H264Preset ,
15+ } ;
1416
1517const INIT_SEGMENT_NAME : & str = "init.mp4" ;
1618const DISK_SPACE_WARNING_THRESHOLD_MB : u64 = 500 ;
@@ -142,7 +144,7 @@ pub enum QueueFrameError {
142144 FFmpeg ( #[ from] ffmpeg:: Error ) ,
143145 #[ error( "Init: {0}" ) ]
144146 Init ( #[ from] InitError ) ,
145- #[ error( "Encode: {0}" ) ]
147+ #[ error( transparent ) ]
146148 Encode ( #[ from] crate :: video:: h264:: QueueFrameError ) ,
147149 #[ error( "Init segment validation failed: {0}" ) ]
148150 InitSegmentInvalid ( String ) ,
@@ -164,7 +166,7 @@ pub struct SegmentedVideoEncoderConfig {
164166impl Default for SegmentedVideoEncoderConfig {
165167 fn default ( ) -> Self {
166168 Self {
167- segment_duration : Duration :: from_secs ( 3 ) ,
169+ segment_duration : Duration :: from_secs ( DEFAULT_KEYFRAME_INTERVAL_SECS as u64 ) ,
168170 preset : H264Preset :: Ultrafast ,
169171 bpp : H264EncoderBuilder :: QUALITY_BPP ,
170172 output_size : None ,
@@ -210,6 +212,7 @@ impl SegmentedVideoEncoder {
210212 set_opt ( "use_timeline" , "0" ) ;
211213 set_opt ( "use_template" , "1" ) ;
212214 set_opt ( "single_file" , "0" ) ;
215+ set_opt ( "hls_playlist" , "1" ) ;
213216 }
214217
215218 let mut builder = H264EncoderBuilder :: new ( video_config)
0 commit comments