in awstreamer/gst_pipeline/dvr_pipeline.py [0:0]
def configure(self, config):
logger.info("Configuring %s..." % self.__class__.__name__)
# Configure source pipeline
VideoPipeline.configure_source(self.graph, config)
# Configure video segment size
if config.isSet("sink.segment_duration"):
segment_duration = config.get("sink.segment_duration")
segment_duration = segment_duration.split(':')
segment_duration_hour = int(segment_duration[0])
segment_duration_min = int(segment_duration[1])
segment_duration_sec = int(segment_duration[2])
segment_duration_total_sec = segment_duration_sec + 60 * (segment_duration_min + 60 * segment_duration_hour)
logger.info("segment_duration_total_sec: %d" % segment_duration_total_sec)
segment_duration_total_ns = 1000000000 * segment_duration_total_sec
self.graph["sink"].set_property("max-size-time", segment_duration_total_ns)
# Configure time-to-live for a video segment
if config.isSet("sink.time_to_keep_days"):
time_to_keep_days = config.get("sink.time_to_keep_days")
time_to_keep_sec = time_to_keep_days * 24 * 60 * 60
max_files = int(float(time_to_keep_sec) / float(segment_duration_total_sec))
logger.info("time_to_keep_sec: %d" % time_to_keep_sec)
logger.info("max_files: %d" % max_files)
self.graph["sink"].set_property("max-files", max_files)
# Configure muxer
if not config.isSet("sink.muxer-factory"):
mux = Gst.ElementFactory.make("qtmux", "mux")
mux.set_property("faststart", True)
self.graph["sink"].set_property("muxer", mux)
# Create desitnation folder
dest_dir = os.path.dirname(config.get("sink.location"))
if dest_dir.strip() != "":
logger.info("Destination directory: %s" % dest_dir)
os.makedirs(dest_dir, mode=0o777, exist_ok=True)