Ejemplo n.º 1
0
        public static VHostOption Parse2Conf(this DomainEntity domain)
        {
            TranscodeOption transcodeOption = domain.TranscodeList?.Parse2Conf();
            SecurityOption  securityOption  = domain.SecurePolicy?.Parse2Conf();
            VHostOption     vHostOption     = new VHostOption(domain.SourceDomain);

            vHostOption.TranscodeOptions = new List <TranscodeOption>();
            if (transcodeOption != null)
            {
                vHostOption.TranscodeOptions.Add(transcodeOption);
            }
            vHostOption.security   = securityOption;
            vHostOption.http_hooks = domain.SecurePolicy?.Parse2HookConf();
            if (domain.RecordTemplate != null)
            {
                if (vHostOption.http_hooks == null)
                {
                    vHostOption.http_hooks = new HttpHookerOption();
                }
                vHostOption.dvr = domain.RecordTemplate?.Parse2Conf();
                vHostOption.http_hooks.on_dvr += $" {ConfigurationValue.DefaultCallbackDomain}api/State/DvrCallback";
            }
            //todo:在这增加拉流设置拉流功能.

            return(vHostOption);
        }
Ejemplo n.º 2
0
        public static TranscodeOption Parse2Conf(this List <TranscodeTemplateEntity> transcodeTemplate)
        {
            if (transcodeTemplate != null && transcodeTemplate.Count > 0)
            {
                List <EngineOption> engineList = new List <EngineOption>();
                foreach (TranscodeTemplateEntity entity in transcodeTemplate)
                {
                    LogoTemplateEntity logoTemplate = entity.LogoTemplate;
                    EngineOption       engine       = new EngineOption(entity.Name);
                    var videoOption = string.IsNullOrEmpty(entity.VideoOption) ? null : JsonConvert.DeserializeObject <VideoOptionModel>(entity.VideoOption);
                    var audioOption = string.IsNullOrEmpty(entity.AudioOption) ? null : JsonConvert.DeserializeObject <AudioOptionModel>(entity.AudioOption);

                    if (logoTemplate != null)
                    {
                        engine.vfilter = VFilterOption.LogoOption($"./etc/{logoTemplate.Id}.png");
                        if (videoOption == null)
                        {
                            videoOption = new VideoOptionModel()
                            {
                                BitRate = 800,
                                Type    = VideoCodeType.Baseline,
                            };
                        }
                    }
                    engine.vcodec   = videoOption == null ? "copy" : "libx264";
                    engine.vprofile = videoOption?.Type.ToString() ?? "";
                    engine.vbitrate = videoOption?.BitRate ?? 0;
                    engine.vfps     = videoOption?.Fps ?? 0;
                    engine.vwidth   = videoOption?.Width ?? 0;
                    engine.vheight  = videoOption?.Height ?? 0;

                    engine.acodec       = audioOption == null ? "copy" : "libfdk_aac";
                    engine.abitrate     = audioOption?.BitRate ?? 0;
                    engine.asample_rate = audioOption?.SampleRate ?? 0;
                    engineList.Add(engine);
                }
                TranscodeOption transcode = new TranscodeOption()
                {
                    enabled       = "on",
                    EngineOptions = engineList,
                };
                return(transcode);
            }
            else
            {
                return(null);
            }
        }