private void buttonInsertSample_Click(object sender, EventArgs e) { // Filter sample // _filter.PresentationTimeRange = new IFilterPresentationTimeRange() { LiveBackoffDuration = string.Empty, StartTimestamp = string.Empty, PresentationWindowDuration = string.Empty, EndTimestamp = "300000000", Timescale = "10000000" }; List <FilterTrackSelectStatement> filterTrackSelectStatements = new List <FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Video, FilterTrackCompareOperator.Equal)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(new FilterTrackBitrateRange(0, 1048576), FilterTrackCompareOperator.Equal)); filterTrackSelectStatements.Add(filterTrackSelectStatement); filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Audio, FilterTrackCompareOperator.Equal)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition(FilterPropertyFourCCValue.mp4a, FilterTrackCompareOperator.Equal)); filterTrackSelectStatements.Add(filterTrackSelectStatement); filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Text, FilterTrackCompareOperator.Equal)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackLanguageCondition("en", FilterTrackCompareOperator.Equal)); filterTrackSelectStatements.Add(filterTrackSelectStatement); filtertracks = ConvertFilterTracksToInternalVar(filterTrackSelectStatements); RefreshTracks(); RefreshTracksConditions(); }
public void CreateUpdateDeleteFilterWithAllSelectStatements() { string filterName = "CreateUpdateDeleteFilter_" + Guid.NewGuid().ToString(); List <FilterTrackSelectStatement> filterTrackSelectStatements = new List <FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackNameCondition("Track Name", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition("AACL", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(new FilterTrackBitrateRange(0, 1), FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackLanguageCondition("ru", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Text, FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); Assert.IsNotNull(filter); Assert.AreEqual(1, _mediaContext.Filters.Where(c => c.Name == filter.Name).Count()); Assert.AreNotEqual(0, _mediaContext.Filters.Count()); Assert.AreEqual(5, _mediaContext.Filters.Where(c => c.Name == filter.Name).First().Tracks.First().PropertyConditions.Count); filter.PresentationTimeRange = new PresentationTimeRange(timescale: 500); filter.Update(); Assert.AreEqual(5, _mediaContext.Filters.Where(c => c.Name == filter.Name).First().Tracks.First().PropertyConditions.Count); Assert.IsNotNull(_mediaContext.Filters.Where(c => c.Name == filter.Name).FirstOrDefault()); filter.Delete(); Assert.IsNull(_mediaContext.Filters.Where(c => c.Name == filter.Name).FirstOrDefault()); }
public void InvalidFourCCConditionShouldThrow() { string filterName = "InvalidFourCCConditionShouldThrow_" + Guid.NewGuid().ToString(); List <FilterTrackSelectStatement> filterTrackSelectStatements = new List <FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition("FourCCCondition validation here", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); }
private List <FilterTrackSelectStatement> CreateFilterTracks() // use internal list to create filter tracks { List <FilterTrackSelectStatement> filterTrackSelectStatements = new List <FilterTrackSelectStatement>(); foreach (var track in filtertracks) { FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); foreach (var condition in track.conditions) { FilterTrackCompareOperator oper = (FilterTrackCompareOperator)Enum.Parse(typeof(FilterTrackCompareOperator), condition.oper); switch (condition.property) { case (FilterProperty.Bitrate): filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(ReturnFilterTrackBitrateRangeFromString(condition.value), oper)); break; case (FilterProperty.FourCC): filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition(condition.value, oper)); break; case (FilterProperty.Language): filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackLanguageCondition(condition.value, oper)); break; case (FilterProperty.Name): filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackNameCondition(condition.value, oper)); break; case (FilterProperty.Type): var mytype = (FilterTrackType)Enum.Parse(typeof(FilterTrackType), condition.value); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(mytype, oper)); break; } } filterTrackSelectStatements.Add(filterTrackSelectStatement); } return(filterTrackSelectStatements); }
public void ApplyDynamicManifestFilter() { const string typeAudio = "Type=\"audio\""; const string typeVideo = "Type=\"video\""; string configuration = File.ReadAllText(WindowsAzureMediaServicesTestConfiguration.DefaultMp4ToSmoothConfig); IAsset inputAsset = AssetTests.CreateAsset(_mediaContext, WindowsAzureMediaServicesTestConfiguration.SmallMp41, AssetCreationOptions.None); IMediaProcessor mediaProcessor = JobTests.GetMediaProcessor(_mediaContext, WindowsAzureMediaServicesTestConfiguration.MpPackagerName); IJob job = JobTests.CreateAndSubmitOneTaskJob(_mediaContext, "ApplyDynamicManifestFilter" + Guid.NewGuid().ToString().Substring(0, 5), mediaProcessor, configuration, inputAsset, TaskOptions.None); JobTests.WaitForJob(job.Id, JobState.Finished, JobTests.VerifyAllTasksFinished); var outputAsset = job.OutputMediaAssets.FirstOrDefault(); outputAsset = _mediaContext.Assets.Where(c => c.Id == outputAsset.Id).FirstOrDefault(); var assetFile = outputAsset.AssetFiles.Where(c => c.Name.EndsWith(".ism")).First(); IAccessPolicy policy = _mediaContext.AccessPolicies.Create("ApplyDynamicManifestFilter" + Guid.NewGuid().ToString().Substring(0, 5), TimeSpan.FromDays(30), AccessPermissions.Read); ILocator originLocator = _mediaContext.Locators.CreateLocator(LocatorType.OnDemandOrigin, outputAsset, policy, DateTime.UtcNow.AddMinutes(-5)); string urlForClientStreaming = originLocator.Path + assetFile.Name + "/manifest"; HttpClient client = new HttpClient(); var message = client.GetAsync(urlForClientStreaming).Result; var content = message.Content; var result = content.ReadAsStringAsync().Result; Assert.AreEqual(message.StatusCode, HttpStatusCode.OK); Assert.IsTrue(result.Length > 0); Assert.IsTrue(result.Contains(typeAudio)); Assert.IsTrue(result.Contains(typeVideo)); var manifestLength = result.Length; // string filterName = "ApplyDynamicManifestFilter_" + DateTime.Now; string filterName = "ApplyDynamicManifestFilter_" + Guid.NewGuid().ToString().Substring(0, 5); List <FilterTrackSelectStatement> filterTrackSelectStatements = new List <FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List <IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Video, FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); Assert.IsNotNull(filter); var filterUrlForClientStreaming = originLocator.Path + assetFile.Name + String.Format("/manifest(filter={0})", filterName); HttpClient filterclient = new HttpClient(); var filtermessage = filterclient.GetAsync(filterUrlForClientStreaming).Result; Assert.AreEqual(filtermessage.StatusCode, HttpStatusCode.OK); var filtercontent = filtermessage.Content; var filterresult = filtercontent.ReadAsStringAsync().Result; Assert.IsTrue(filterresult.Length > 0); Assert.AreNotEqual(manifestLength, filterresult); Assert.IsTrue(filterresult.Contains(typeAudio)); Assert.IsFalse(filterresult.Contains(typeVideo)); outputAsset.DeleteAsync(); inputAsset.DeleteAsync(); job.DeleteAsync(); filter.DeleteAsync(); }
public void ApplyDynamicManifestFilter() { const string typeAudio = "Type=\"audio\""; const string typeVideo = "Type=\"video\""; string configuration = File.ReadAllText(WindowsAzureMediaServicesTestConfiguration.DefaultMp4ToSmoothConfig); IAsset inputAsset = AssetTests.CreateAsset(_mediaContext, WindowsAzureMediaServicesTestConfiguration.SmallMp41, AssetCreationOptions.None); IMediaProcessor mediaProcessor = JobTests.GetMediaProcessor(_mediaContext, WindowsAzureMediaServicesTestConfiguration.MpPackagerName); IJob job = JobTests.CreateAndSubmitOneTaskJob(_mediaContext, "ApplyDynamicManifestFilter" + Guid.NewGuid().ToString().Substring(0, 5), mediaProcessor, configuration, inputAsset, TaskOptions.None); JobTests.WaitForJob(job.Id, JobState.Finished, JobTests.VerifyAllTasksFinished); var outputAsset = job.OutputMediaAssets.FirstOrDefault(); outputAsset = _mediaContext.Assets.Where(c => c.Id == outputAsset.Id).FirstOrDefault(); var assetFile = outputAsset.AssetFiles.Where(c => c.Name.EndsWith(".ism")).First(); IAccessPolicy policy = _mediaContext.AccessPolicies.Create("ApplyDynamicManifestFilter" + Guid.NewGuid().ToString().Substring(0, 5), TimeSpan.FromDays(30), AccessPermissions.Read); ILocator originLocator = _mediaContext.Locators.CreateLocator(LocatorType.OnDemandOrigin, outputAsset, policy, DateTime.UtcNow.AddMinutes(-5)); string urlForClientStreaming = originLocator.Path + assetFile.Name + "/manifest"; HttpClient client = new HttpClient(); var message = client.GetAsync(urlForClientStreaming).Result; var content = message.Content; var result = content.ReadAsStringAsync().Result; Assert.AreEqual(message.StatusCode,HttpStatusCode.OK); Assert.IsTrue(result.Length >0); Assert.IsTrue(result.Contains(typeAudio)); Assert.IsTrue(result.Contains(typeVideo)); var manifestLength = result.Length; // string filterName = "ApplyDynamicManifestFilter_" + DateTime.Now; string filterName = "ApplyDynamicManifestFilter_" + Guid.NewGuid().ToString().Substring(0,5); List<FilterTrackSelectStatement> filterTrackSelectStatements = new List<FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List<IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Video, FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); Assert.IsNotNull(filter); var filterUrlForClientStreaming = originLocator.Path + assetFile.Name + String.Format("/manifest(filter={0})",filterName); HttpClient filterclient = new HttpClient(); var filtermessage = filterclient.GetAsync(filterUrlForClientStreaming).Result; Assert.AreEqual(filtermessage.StatusCode, HttpStatusCode.OK); var filtercontent = filtermessage.Content; var filterresult = filtercontent.ReadAsStringAsync().Result; Assert.IsTrue(filterresult.Length > 0); Assert.AreNotEqual(manifestLength, filterresult); Assert.IsTrue(filterresult.Contains(typeAudio)); Assert.IsFalse(filterresult.Contains(typeVideo)); outputAsset.DeleteAsync(); inputAsset.DeleteAsync(); job.DeleteAsync(); filter.DeleteAsync(); }
public void InvalidFourCCConditionShouldThrow() { string filterName = "InvalidFourCCConditionShouldThrow_" + Guid.NewGuid().ToString(); List<FilterTrackSelectStatement> filterTrackSelectStatements = new List<FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List<IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition("FourCCCondition validation here", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); }
public void CreateUpdateDeleteFilterWithAllSelectStatements() { string filterName = "CreateUpdateDeleteFilter_" + Guid.NewGuid().ToString(); List<FilterTrackSelectStatement> filterTrackSelectStatements = new List<FilterTrackSelectStatement>(); FilterTrackSelectStatement filterTrackSelectStatement = new FilterTrackSelectStatement(); filterTrackSelectStatement.PropertyConditions = new List<IFilterTrackPropertyCondition>(); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackNameCondition("Track Name",FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackFourCCCondition("AACL", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackBitrateRangeCondition(new FilterTrackBitrateRange(0,1), FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackLanguageCondition("ru", FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatement.PropertyConditions.Add(new FilterTrackTypeCondition(FilterTrackType.Text, FilterTrackCompareOperator.NotEqual)); filterTrackSelectStatements.Add(filterTrackSelectStatement); IStreamingFilter filter = _mediaContext.Filters.Create(filterName, new PresentationTimeRange(), filterTrackSelectStatements); Assert.IsNotNull(filter); Assert.AreEqual(1, _mediaContext.Filters.Where(c => c.Name == filter.Name).Count()); Assert.AreNotEqual(0, _mediaContext.Filters.Count()); Assert.AreEqual(5, _mediaContext.Filters.Where(c => c.Name == filter.Name).First().Tracks.First().PropertyConditions.Count); filter.PresentationTimeRange = new PresentationTimeRange(timescale: 500); filter.Update(); Assert.AreEqual(5, _mediaContext.Filters.Where(c => c.Name == filter.Name).First().Tracks.First().PropertyConditions.Count); Assert.IsNotNull(_mediaContext.Filters.Where(c => c.Name == filter.Name).FirstOrDefault()); filter.Delete(); Assert.IsNull(_mediaContext.Filters.Where(c => c.Name == filter.Name).FirstOrDefault()); }