public MediaDirectoryViewmodel(IMediaDirectory directory, string directoryName, bool includeImport = false, bool includeExport = false) { Directory = directory; DirectoryName = directoryName; SubDirectories = (directory as IIngestDirectory)?.SubDirectories?.Where(d => includeImport && d.ContainsImport() || includeExport && d.ContainsExport()) .Select(d => new MediaDirectoryViewmodel((IIngestDirectory)d, d.DirectoryName, includeImport, includeExport)).ToList() ?? new List <MediaDirectoryViewmodel>(); }
public MediaSearchViewmodel(IPreview preview, IEngine engine, TMediaType mediaType, VideoLayer layer, bool closeAfterAdd, VideoFormatDescription videoFormatDescription) { _engine = engine; Layer = layer; if (mediaType == TMediaType.Movie) { _videoFormatDescription = engine.FormatDescription; if (preview != null) { PreviewViewmodel = new PreviewViewmodel(engine, preview) { IsSegmentsVisible = true } } ; } else { _videoFormatDescription = videoFormatDescription; } _mediaType = mediaType; if (PreviewViewmodel != null) { PreviewViewmodel.PropertyChanged += _onPreviewViewModelPropertyChanged; } IMediaDirectory pri = mediaType == TMediaType.Animation ? (IMediaDirectory)engine.MediaManager.AnimationDirectoryPRI : engine.MediaManager.MediaDirectoryPRI; IMediaDirectory sec = mediaType == TMediaType.Animation ? (IMediaDirectory)engine.MediaManager.AnimationDirectorySEC : engine.MediaManager.MediaDirectorySEC; _searchDirectory = pri != null && pri.DirectoryExists() ? pri : sec != null && sec.DirectoryExists() ? sec : null; if (_searchDirectory != null) { _searchDirectory.MediaAdded += _searchDirectory_MediaAdded; _searchDirectory.MediaRemoved += _searchDirectory_MediaRemoved; _searchDirectory.MediaVerified += _searchDirectory_MediaVerified; } _mediaCategory = MediaCategories.FirstOrDefault(); NewEventStartType = TStartType.After; if (!closeAfterAdd) { OkButtonText = resources._button_Add; } _createCommands(); Items = new ObservableCollection <MediaViewViewmodel>(_searchDirectory.GetFiles() .Where(m => _canAddMediaToCollection(m, mediaType)) .Select(m => new MediaViewViewmodel(m))); _itemsView = CollectionViewSource.GetDefaultView(Items); _itemsView.SortDescriptions.Add(mediaType == TMediaType.Movie ? new SortDescription(nameof(MediaViewViewmodel.LastUpdated), ListSortDirection.Descending) : new SortDescription(nameof(MediaViewViewmodel.MediaName), ListSortDirection.Ascending)); _itemsView.Filter += _itemsFilter; }
public MediaSearchViewmodel(IPreview preview, IMediaManager manager, TMediaType mediaType, VideoLayer layer, bool closeAfterAdd, VideoFormatDescription videoFormatDescription) { _manager = manager; _engine = manager.Engine; Layer = layer; if (mediaType == TMediaType.Movie) { _videoFormatDescription = manager.FormatDescription; _frameRate = _videoFormatDescription.FrameRate; if (preview != null) { _previewViewmodel = new PreviewViewmodel(preview) { IsSegmentsVisible = true } } ; WindowWidth = _previewViewmodel != null ? 950 : 650; } else { _videoFormatDescription = videoFormatDescription; _frameRate = videoFormatDescription?.FrameRate; WindowWidth = 750; } _mediaType = mediaType; if (_previewViewmodel != null) { _previewViewmodel.PropertyChanged += _onPreviewViewModelPropertyChanged; } IMediaDirectory pri = mediaType == TMediaType.Animation ? (IMediaDirectory)_manager.AnimationDirectoryPRI : _manager.MediaDirectoryPRI; IMediaDirectory sec = mediaType == TMediaType.Animation ? (IMediaDirectory)_manager.AnimationDirectorySEC : _manager.MediaDirectorySEC; _searchDirectory = pri != null && pri.DirectoryExists() ? pri : sec != null && sec.DirectoryExists() ? sec : null; _searchDirectory.MediaAdded += _searchDirectory_MediaAdded; _searchDirectory.MediaRemoved += _searchDirectory_MediaRemoved; _searchDirectory.MediaVerified += _searchDirectory_MediaVerified; _closeAfterAdd = closeAfterAdd; _mediaCategory = MediaCategories.FirstOrDefault(); NewEventStartType = TStartType.After; if (!closeAfterAdd) { OkButtonText = resources._button_Add; } _createCommands(); _items = new ObservableCollection <MediaViewViewmodel>(_searchDirectory.GetFiles() .Where(m => _canAddMediaToCollection(m, mediaType)) .Select(m => new MediaViewViewmodel(m))); _itemsView = CollectionViewSource.GetDefaultView(_items); _itemsView.SortDescriptions.Add(new SortDescription(nameof(MediaViewViewmodel.MediaName), ListSortDirection.Ascending)); _itemsView.Filter += _itemsFilter; _view = new MediaSearchView() { DataContext = this }; _view.Closed += _windowClosed; _view.Show(); }
public void Initialize() { Debug.WriteLine(this, "Begin initializing"); Logger.Debug("Begin initializing"); ArchiveDirectory = this.LoadArchiveDirectory <ArchiveDirectory>(_engine.IdArchive); MediaDirectoryPRI = (_engine.PlayoutChannelPRI == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelPRI).Owner.MediaDirectory; MediaDirectorySEC = (_engine.PlayoutChannelSEC == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelSEC).Owner.MediaDirectory; MediaDirectoryPRV = (_engine.PlayoutChannelPRV == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelPRV).Owner.MediaDirectory; AnimationDirectoryPRI = (_engine.PlayoutChannelPRI == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelPRI).Owner.AnimationDirectory; AnimationDirectorySEC = (_engine.PlayoutChannelSEC == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelSEC).Owner.AnimationDirectory; AnimationDirectoryPRV = (_engine.PlayoutChannelPRV == null) ? null : ((CasparServerChannel)_engine.PlayoutChannelPRV).Owner.AnimationDirectory; IMediaDirectory[] initializationList = new IMediaDirectory[] { MediaDirectoryPRI, MediaDirectorySEC, MediaDirectoryPRV, AnimationDirectoryPRI, AnimationDirectorySEC, AnimationDirectoryPRV, ArchiveDirectory }; foreach (MediaDirectory dir in initializationList.OfType <IMediaDirectory>().Distinct()) { dir.Initialize(); } if (ArchiveDirectory != null) { ArchiveDirectory.MediaDeleted += ArchiveDirectory_MediaDeleted; } ServerDirectory sdir = MediaDirectoryPRI as ServerDirectory; if (sdir != null) { sdir.MediaPropertyChanged += _serverMediaPropertyChanged; sdir.PropertyChanged += _onServerDirectoryPropertyChanged; sdir.MediaSaved += _onServerDirectoryMediaSaved; sdir.MediaVerified += _mediaPRIVerified; sdir.MediaRemoved += _mediaPRIRemoved; } sdir = MediaDirectorySEC as ServerDirectory; if (MediaDirectoryPRI != MediaDirectorySEC && sdir != null) { sdir.MediaPropertyChanged += _serverMediaPropertyChanged; sdir.PropertyChanged += _onServerDirectoryPropertyChanged; } AnimationDirectory adir = AnimationDirectoryPRI as AnimationDirectory; if (adir != null) { adir.PropertyChanged += _onAnimationDirectoryPropertyChanged; adir.MediaAdded += _onAnimationDirectoryMediaAdded; adir.MediaRemoved += _onAnimationDirectoryMediaRemoved; adir.MediaPropertyChanged += _onAnimationDirectoryMediaPropertyChanged; } adir = AnimationDirectorySEC as AnimationDirectory; if (adir != null) { adir.PropertyChanged += _onAnimationDirectoryPropertyChanged; } _loadIngestDirs(Path.Combine(Directory.GetCurrentDirectory(), ConfigurationManager.AppSettings["IngestFolders"])); _fileManager.VolumeReferenceLoudness = Convert.ToDecimal(_engine.VolumeReferenceLoudness); Debug.WriteLine(this, "End initializing"); Logger.Debug("End initializing"); }
private void _ingestSelectionToDir(IServerDirectory directory) { IMediaDirectory currentDir = _selectedDirectory?.Directory; if (currentDir is IIngestDirectory) { List <IConvertOperation> ingestList = new List <IConvertOperation>(); var selectedMedia = _getSelections(); ThreadPool.QueueUserWorkItem(o => { selectedMedia.ForEach(m => { if (!m.IsVerified) { m.Verify(); } }); }); foreach (IMedia sourceMedia in selectedMedia) { string destFileName = FileUtils.GetUniqueFileName(directory.Folder, $"{Path.GetFileNameWithoutExtension(sourceMedia.FileName)}{FileUtils.DefaultFileExtension(sourceMedia.MediaType)}"); IPersistentMediaProperties destMediaProperties = new PersistentMediaProxy { FileName = destFileName, MediaName = FileUtils.GetFileNameWithoutExtension(sourceMedia.FileName, sourceMedia.MediaType), MediaType = sourceMedia.MediaType == TMediaType.Unknown ? TMediaType.Movie : sourceMedia.MediaType, Duration = sourceMedia.Duration, DurationPlay = sourceMedia.DurationPlay, MediaGuid = sourceMedia.MediaGuid, MediaCategory = sourceMedia.MediaCategory }; ingestList.Add( FileManagerViewmodel.CreateConvertOperation( sourceMedia, destMediaProperties, directory, _mediaManager.VideoFormat, (sourceMedia.Directory is IIngestDirectory) ? ((IIngestDirectory)sourceMedia.Directory).AudioVolume : 0, (sourceMedia.Directory is IIngestDirectory) ? ((IIngestDirectory)sourceMedia.Directory).SourceFieldOrder : TFieldOrder.Unknown, (sourceMedia.Directory is IIngestDirectory) ? ((IIngestDirectory)sourceMedia.Directory).AspectConversion : TAspectConversion.NoConversion, (sourceMedia.Directory is IIngestDirectory) ? ((IIngestDirectory)sourceMedia.Directory).MediaLoudnessCheckAfterIngest : false )); } if (ingestList.Count != 0) { using (IngestEditViewmodel ievm = new IngestEditViewmodel(ingestList, _preview, _mediaManager)) { if (ievm.ShowDialog() == true) { foreach (var operationVm in ievm.OperationList) { _mediaManager.FileManager.Queue(operationVm.FileOperation, false); } } } } } }
public MediaDirectoryViewmodel(IMediaDirectory directory, bool includeImport = false, bool includeExport = false) { _directory = directory; _subdirectories = (directory as IIngestDirectory)?.SubDirectories != null ? ((IIngestDirectory)directory) .SubDirectories .Where(d => (includeImport && d.ContainsImport()) || (includeExport && d.ContainsExport())) .Select(d => new MediaDirectoryViewmodel((IIngestDirectory)d, includeImport, includeExport)).ToList() : new List <MediaDirectoryViewmodel>(); }
private void _archiveCopy(Media fromMedia, IMediaDirectory destDirectory, bool deleteAfterSuccess, bool toTop) { FileOperation operation = new FileOperation { Kind = deleteAfterSuccess ? TFileOperationKind.Move : TFileOperationKind.Copy, SourceMedia = fromMedia, DestDirectory = destDirectory }; operation.Success += _archived; operation.Failure += _failure; MediaManager.FileManager.Queue(operation, toTop); }
private void _archiveCopy(IMedia fromMedia, IMediaDirectory destDirectory, bool deleteAfterSuccess) { var operation = new FileOperation((FileManager)MediaManager.FileManager) { Kind = deleteAfterSuccess ? TFileOperationKind.Move : TFileOperationKind.Copy, Source = fromMedia, DestDirectory = destDirectory }; operation.Success += _archiveCopy_success; operation.Failure += _archiveCopy_failure; MediaManager.FileManager.Queue(operation); }
private void _archiveCopy(IMedia fromMedia, IMediaDirectory destDirectory, bool deleteAfterSuccess) { var operation = deleteAfterSuccess ? (FileOperationBase) new MoveOperation { Source = fromMedia, DestDirectory = destDirectory } : new CopyOperation { Source = fromMedia, DestDirectory = destDirectory }; operation.Success += _archiveCopy_success; operation.Failure += _archiveCopy_failure; FileManager.Current.Queue(operation); }
private void _setSelectdDirectory(MediaDirectoryViewmodel directory) { IMediaDirectory dir = _selectedDirectory?.Directory; if (dir != null) { dir.MediaAdded -= _selectedDirectoryMediaAdded; dir.MediaRemoved -= _selectedDirectoryMediaRemoved; dir.PropertyChanged -= _selectedDirectoryPropertyChanged; } dir = directory?.Directory; _selectedDirectory = directory; if (dir != null) { dir.MediaAdded += _selectedDirectoryMediaAdded; dir.MediaRemoved += _selectedDirectoryMediaRemoved; dir.PropertyChanged += _selectedDirectoryPropertyChanged; if (dir is IArchiveDirectory) { if (!string.IsNullOrEmpty((dir as IArchiveDirectory).SearchString)) { SearchText = (dir as IArchiveDirectory).SearchString; } } } PreviewDisplay = PreviewViewmodel != null && dir != null && (!(dir is IIngestDirectory) || (dir as IIngestDirectory).AccessType == TDirectoryAccessType.Direct); if (PreviewViewmodel != null) { PreviewViewmodel.IsSegmentsVisible = dir is IServerDirectory || dir is IArchiveDirectory; } _reloadFiles(directory); SelectedMedia = null; NotifyPropertyChanged(nameof(SelectedDirectory)); NotifyPropertyChanged(nameof(DisplayDirectoryInfo)); NotifyPropertyChanged(nameof(IsDisplayFolder)); NotifyPropertyChanged(nameof(IsServerDirectory)); NotifyPropertyChanged(nameof(IsMediaCategoryVisible)); NotifyPropertyChanged(nameof(IsIngestOrArchiveDirectory)); NotifyPropertyChanged(nameof(IsAnimationDirectory)); NotifyPropertyChanged(nameof(IsDisplayClipNr)); InvalidateRequerySuggested(); _notifyDirectoryPropertiesChanged(); }
private string ValidateDestFileName() { IMediaProperties media = _convertOperation.DestMediaProperties; if (media != null) { IMediaDirectory dir = _convertOperation.DestDirectory; if (dir != null) { if (_destFileName.StartsWith(" ") || _destFileName.EndsWith(" ")) { return(resources._validate_FileNameCanNotStartOrEndWithSpace); } else if (_destFileName.IndexOfAny(Path.GetInvalidFileNameChars()) > 0) { return(resources._validate_FileNameCanNotContainSpecialCharacters); } else { var newName = _destFileName.ToLowerInvariant(); if (dir.FileExists(newName, media.Folder)) { return(resources._validate_FileAlreadyExists); } else if (media is IPersistentMediaProperties) { if (media.MediaType == TMediaType.Movie && !FileUtils.VideoFileTypes.Contains(Path.GetExtension(newName).ToLower())) { return(string.Format(resources._validate_FileMustHaveExtension, string.Join(resources._or_, FileUtils.VideoFileTypes))); } if (media.MediaType == TMediaType.Still && !FileUtils.StillFileTypes.Contains(Path.GetExtension(newName).ToLower())) { return(string.Format(resources._validate_FileMustHaveExtension, string.Join(resources._or_, FileUtils.StillFileTypes))); } } } } } return(null); }
public static string GetDisplayName(this IMediaDirectory mediaDirectory, IMediaManager mediaManager) { switch (mediaDirectory) { case IServerDirectory _: return(mediaDirectory == mediaManager.MediaDirectoryPRI ? Properties.Resources._primary : Properties.Resources._secondary); case IAnimationDirectory _: return(mediaDirectory == mediaManager.AnimationDirectoryPRI ? Properties.Resources._animations_Primary : Properties.Resources._animations_Secondary); case IIngestDirectory ingestDirectory: return(ingestDirectory.DirectoryName); case IArchiveDirectory _: return(Properties.Resources._archive); default: return(mediaDirectory.Folder); } }
public IIngestOperation CreateIngestOperation(IIngestMedia sourceMedia, IMediaDirectory destDirectory) { var sourceDirectory = sourceMedia.Directory as IIngestDirectory; if (sourceDirectory == null) { return(null); } return(new IngestOperation(this) { Source = sourceMedia, DestDirectory = destDirectory, AudioVolume = sourceDirectory.AudioVolume, SourceFieldOrderEnforceConversion = sourceDirectory.SourceFieldOrder, AspectConversion = sourceDirectory.AspectConversion, LoudnessCheck = sourceDirectory.MediaLoudnessCheckAfterIngest, StartTC = sourceMedia.TcStart, Duration = sourceMedia.Duration }); }
private void _refreshMediaDirectory(IMediaDirectory directory) { if (directory != null) { ThreadPool.QueueUserWorkItem(o => { try { directory.Refresh(); } catch (Exception e) { if (directory == SelectedDirectory.Directory) { Application.Current.Dispatcher.BeginInvoke((Action) delegate { MessageBox.Show(string.Format(resources._message_DirectoryRefreshFailed, e.Message), resources._caption_Error, MessageBoxButton.OK, MessageBoxImage.Hand); }); } } }); } }
internal IConvertOperation CreateConvertOperation(IMedia sourceMedia, IMediaProperties destMediaProperties, IMediaDirectory destDirectory, TVideoFormat outputFormat, decimal audioVolume, TFieldOrder sourceFieldOrderEnforceConversion, TAspectConversion aspectConversion, bool loudnessCheck) { IConvertOperation result = _fileManager.CreateConvertOperation(); result.SourceMedia = sourceMedia; result.DestMediaProperties = destMediaProperties; result.DestDirectory = destDirectory; result.AudioVolume = audioVolume; result.SourceFieldOrderEnforceConversion = sourceFieldOrderEnforceConversion; result.AspectConversion = aspectConversion; result.StartTC = sourceMedia.TcPlay; result.Duration = sourceMedia.DurationPlay; result.LoudnessCheck = loudnessCheck; return(result); }
public ServerMedia(IMediaDirectory directory, Guid guid, UInt64 idPersistentMedia, IArchiveDirectory archiveDirectory) : base(directory, guid, idPersistentMedia) { IdPersistentMedia = idPersistentMedia; _isArchived = new Lazy <bool>(() => archiveDirectory != null && EngineController.Database.DbArchiveContainsMedia(archiveDirectory, this)); }
public ExtensionNameDropdownListTagHelper(IMediaDirectory mediaDirectory, ISettingDictionaryManager settingDictionaryManager) { _mediaDirectory = mediaDirectory; _settingDictionaryManager = settingDictionaryManager; }
public Media(IMediaDirectory directory, Guid mediaGuid = default(Guid)) { _directory = (MediaDirectory)directory; _mediaGuid = mediaGuid == default(Guid)? Guid.NewGuid() : mediaGuid; _directory.MediaAdd(this); }
public IndexModel(IMediaDirectory mediaDirectory) { _mediaDirectory = mediaDirectory; }
/// <summary> /// 初始化类<see cref="StorageController"/>。 /// </summary> /// <param name="mediaFileProvider">媒体文件提供者接口。</param> /// <param name="storageDirectory">存储文件夹接口。</param> public StorageController(IMediaDirectory mediaFileProvider, IStorageDirectory storageDirectory) { _mediaFileProvider = mediaFileProvider; _storageDirectory = storageDirectory; }
/// <summary> /// 初始化类<see cref="MediaController"/>。 /// </summary> /// <param name="mediaFileProvider">媒体文件提供者接口。</param> public MediaController(IMediaDirectory mediaFileProvider) { _mediaFileProvider = mediaFileProvider; }
public ServerMedia(IMediaDirectory directory, Guid guid, UInt64 idPersistentMedia, IArchiveDirectory archiveDirectory) : base(directory, guid, idPersistentMedia) { IdPersistentMedia = idPersistentMedia; _archiveDirectory = archiveDirectory; _isArchived = new Lazy <bool>(() => _archiveDirectory == null ? false :_archiveDirectory.DbArchiveContainsMedia(this)); }
/// <summary> /// 初始化类<see cref="ExtensionNameDropdownListTagHelper"/>。 /// </summary> /// <param name="mediaDirectory">媒体文件夹接口。</param> /// <param name="stringManager">字典管理接口。</param> public ExtensionNameDropdownListTagHelper(IMediaDirectory mediaDirectory, INamedStringManager stringManager) { _mediaDirectory = mediaDirectory; _stringManager = stringManager; }
/// <summary> /// 初始化类<see cref="UserManager"/>。 /// </summary> /// <param name="store">用户存储接口。</param> /// <param name="optionsAccessor"><see cref="T:Microsoft.AspNetCore.Identity.IdentityOptions" />实例对象。</param> /// <param name="passwordHasher">密码加密器接口。</param> /// <param name="userValidators">用户验证接口。</param> /// <param name="passwordValidators">密码验证接口。</param> /// <param name="keyNormalizer">唯一键格式化字符串。</param> /// <param name="errors">错误实例。</param> /// <param name="serviceProvider">服务提供者接口。</param> public UserManager(IUserStore <User> store, IOptions <IdentityOptions> optionsAccessor, IPasswordHasher <User> passwordHasher, IEnumerable <IUserValidator <User> > userValidators, IEnumerable <IPasswordValidator <User> > passwordValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider serviceProvider) : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, serviceProvider) { _directory = serviceProvider.GetRequiredService <IMediaDirectory>(); }
public AnimatedMedia(IMediaDirectory directory, Guid guid, ulong idPersistentMedia) : base(directory, guid, idPersistentMedia) { MediaType = TMediaType.Animation; }
public AnimatedMedia(IMediaDirectory directory, Guid guid, UInt64 idPersistentMedia) : base(directory, guid, idPersistentMedia) { _fields.DictionaryOperation += _fields_DictionaryOperation; _mediaType = TMediaType.Animation; }
public EditModel(IMediaDirectory mediaDirectory) { _mediaDirectory = mediaDirectory; }
internal PersistentMedia(IMediaDirectory directory, Guid guid, UInt64 idPersistentMedia) : base(directory, guid) { IdPersistentMedia = idPersistentMedia; _mediaSegments = new Lazy <MediaSegments>(() => EngineController.Database.DbMediaSegmentsRead <MediaSegments>(this)); }
/// <summary> /// 初始化类<see cref="UploadController"/>。 /// </summary> /// <param name="mediaDirectory">媒体文件夹接口实例。</param> public UploadController(IMediaDirectory mediaDirectory) { _mediaDirectory = mediaDirectory; }
internal PersistentMedia(IMediaDirectory directory, Guid guid, UInt64 idPersistentMedia) : base(directory, guid) { IdPersistentMedia = idPersistentMedia; _mediaSegments = new Lazy <MediaSegments>(() => this.DbMediaSegmentsRead <MediaSegments>()); }