def updatePipeline(self, pipeline, analysis, tees, timeout=None): tag = self._getTranscodingTag() config = self._getTranscodingConfig() outputPath = self._getOutputPath() if analysis.hasAudio: audioEncBin = makeAudioEncodeBin(config, analysis, tag, pipelineInfo=self._pipelineInfo, logger=self) else: audioEncBin = None if analysis.hasVideo: videoEncBin = makeVideoEncodeBin(config, analysis, tag, pipelineInfo=self._pipelineInfo, logger=self) else: videoEncBin = None encBin = makeMuxerEncodeBin(outputPath, config, analysis, tag, audioEncBin, videoEncBin, pipelineInfo=self._pipelineInfo, logger=self) pipeline.add(encBin) if videoEncBin: tees['videosink'].get_pad('src%d').link(encBin.get_pad('videosink')) self._bins["video-encoder"] = videoEncBin if audioEncBin: tees['audiosink'].get_pad('src%d').link(encBin.get_pad('audiosink')) self._bins["audio-encoder"] = audioEncBin
def updatePipeline(self, pipeline, analysis, tees, timeout=None): tag = self._getTranscodingTag() self.log("Updating transcoding pipeline for thumbnail target '%s'", tag) # First connect the custom thumbnail sink config = self._getTranscodingConfig() unit = config.periodUnit value = config.periodValue maxCount = config.maxCount ensureOne = config.ensureOne sampler = self.__createSampler(maxCount, unit, value, ensureOne, analysis) thumbSink = ThumbSink(sampler, "ThumbSink-" + tag) queue = gst.element_factory_make("queue", "thumbqueue-%s" % tag) pipeline.add(queue, thumbSink) gst.element_link_many(tees["videosink"], queue, thumbSink) # Then create the thumbnailing pipeline with a custom thumnail source config = self._getTranscodingConfig() thumbPipeName = "thumbnailing-" + tag thumbPipeline = gst.Pipeline(thumbPipeName) thumbSrc = ThumbSrc("ThumbSrc-" + tag) encoderConf = self.EncoderConfig(config) videoEncBin = makeVideoEncodeBin(encoderConf, analysis, tag, withRateControl=False, logger=self) fileSink = gst.element_factory_make("filesink", "filesink-%s" % tag) thumbPipeline.add(thumbSrc, videoEncBin, fileSink) gst.element_link_many(thumbSrc, videoEncBin, fileSink) self._thumbSink = thumbSink self._thumbSrc = thumbSrc self._pipeline = thumbPipeline self._fileSink = fileSink self._bus = self._pipeline.get_bus() self._bus.add_signal_watch() self._bus.connect("message", self._bus_message_callback)
def updatePipeline(self, pipeline, analysis, tees, timeout=None): tag = self._getTranscodingTag() config = self._getTranscodingConfig() outputPath = self._getOutputPath() videoEncBin = makeVideoEncodeBin(config, analysis, tag, pipelineInfo=self._pipelineInfo, logger=self) encBin = makeMuxerEncodeBin(outputPath, config, analysis, tag, None, videoEncBin, pipelineInfo=self._pipelineInfo, logger=self) pipeline.add(encBin) tees['videosink'].get_pad('src%d').link(encBin.get_pad('videosink')) self._bins["video-encoder"] = videoEncBin