public static VideoSource GetVideoSourceByName(string Name) { VideoSourceManager vsm = mConnection.VideoSourceManager; for (int i = 0; i < vsm.VideoSources.Count; i++) { VideoSource v = vsm.VideoSources.VideoSource[i]; if (v.DisplayName.Equals(Name)) { return(v); } } return(null); }
public static Guid ComputeVideo(string originFilePath, string videoEncodingFormats, bool?sprite) { FileContainer fileContainer = FileContainer.NewVideoContainer(originFilePath); FileItem sourceFile = fileContainer.SourceFileItem; // Récupérer la durée totale de la vidéo et sa résolution, autorisation encoding bool successGetSourceInfo = VideoSourceManager.SuccessAnalyseSource(sourceFile, sourceFile.InfoSourceProcess); if (!successGetSourceInfo) { return(fileContainer.ProgressToken); } // si ipfs add source demandé ou dépassement de la durée max if (IpfsSettings.Instance.AddVideoSource || sourceFile.HasReachMaxVideoDurationForEncoding()) { sourceFile.AddIpfsProcess(sourceFile.SourceFilePath); IpfsDaemon.Instance.Queue(sourceFile); } if (!sourceFile.HasReachMaxVideoDurationForEncoding()) { VideoSize[] requestFormats = GetVideoSizes(videoEncodingFormats); VideoSize[] authorizedFormats = GetVideoSizes(VideoSettings.Instance.AuthorizedQuality); IList <VideoSize> formats = requestFormats .Intersect(authorizedFormats) .OrderBy(v => v.QualityOrder) .ToList(); // suppression des formats à encoder avec une qualité/bitrate/nbframe/resolution... supérieure foreach (VideoSize videoSize in formats.ToList()) { if (sourceFile.VideoHeight <= videoSize.MinSourceHeightForEncoding) { formats.Remove(videoSize); } } // si sprite demandé if (sprite ?? false) { fileContainer.AddSprite(); // si pas d'encoding à faire, il faut lancer le sprite de suite car sinon il ne sera pas lancé à la fin de l'encoding if (!formats.Any()) { SpriteDaemon.Instance.Queue(fileContainer.SpriteVideoFileItem, "Waiting sprite creation..."); } } // s'il y a de l'encoding à faire if (formats.Any()) { // ajouter les formats à encoder fileContainer.AddEncodedVideo(formats); if (VideoSettings.Instance.GpuEncodeMode) { sourceFile.AddGpuEncodeProcess(); // encoding audio de la source puis ça sera encoding videos Gpu AudioCpuEncodeDaemon.Instance.Queue(sourceFile, "waiting audio encoding..."); } else { // si encoding est demandé, et gpuMode -> encodingAudio foreach (FileItem file in fileContainer.EncodedFileItems) { file.AddCpuEncodeProcess(); AudioVideoCpuEncodeDaemon.Instance.Queue(file, "Waiting encode..."); } } } } return(fileContainer.ProgressToken); }
public static Guid ComputeVideo(string originFilePath, string videoEncodingFormats, bool?sprite) { FileContainer fileContainer = FileContainer.NewVideoContainer(originFilePath); FileItem sourceFile = fileContainer.SourceFileItem; // Récupérer la durée totale de la vidéo et sa résolution, autorisation encoding bool successGetSourceInfo = VideoSourceManager.SuccessAnalyseSource(sourceFile, sourceFile.InfoSourceProcess); if (successGetSourceInfo && !sourceFile.HasReachMaxVideoDurationForEncoding()) { VideoSize[] requestFormats = GetVideoSizes(videoEncodingFormats); VideoSize[] authorizedFormats = GetVideoSizes(VideoSettings.Instance.AuthorizedQuality); IList <VideoSize> formats = requestFormats.Intersect(authorizedFormats).ToList(); // suppression des formats à encoder avec une qualité/bitrate/nbframe/resolution... supérieure foreach (VideoSize videoSize in formats.ToList()) { switch (videoSize) { case VideoSize.F240p: if (sourceFile.VideoHeight <= 240) { formats.Remove(videoSize); } break; case VideoSize.F360p: if (sourceFile.VideoHeight <= 360) { formats.Remove(videoSize); } break; case VideoSize.F480p: if (sourceFile.VideoHeight <= 480) { formats.Remove(videoSize); } break; case VideoSize.F720p: if (sourceFile.VideoHeight <= 720) { formats.Remove(videoSize); } break; case VideoSize.F1080p: if (sourceFile.VideoHeight <= 1080) { formats.Remove(videoSize); } break; } } if (formats.Any()) { fileContainer.AddEncodedVideo(formats); } // si ipfs add source demandé mais pas d'encoding à faire... if (IpfsSettings.Instance.AddVideoSource || !fileContainer.EncodedFileItems.Any()) { sourceFile.AddIpfsProcess(sourceFile.SourceFilePath); IpfsDaemon.Instance.Queue(sourceFile); } // si sprite demandé if (sprite ?? false) { fileContainer.AddSprite(); // si pas d'encoding à faire... déclencher le sprite maintenant avec la source if (!fileContainer.EncodedFileItems.Any()) { SpriteDaemon.Instance.Queue(fileContainer.SpriteVideoFileItem, "Waiting sprite creation..."); } } } if (fileContainer.EncodedFileItems.Any()) { if (VideoSettings.Instance.GpuEncodeMode) { // encoding audio de la source puis ça sera encoding videos Gpu AudioCpuEncodeDaemon.Instance.Queue(sourceFile, "waiting audio encoding..."); } else { // si encoding est demandé, et gpuMode -> encodingAudio foreach (FileItem file in fileContainer.EncodedFileItems) { AudioVideoCpuEncodeDaemon.Instance.Queue(file, "Waiting encode..."); } } } return(fileContainer.ProgressToken); }
private VideoSourceCreator() { _vsMgr = VideoSourceManager.CreateInstance(InfoService.Instance.ClientHub); }