コード例 #1
0
        public DialogResult Display()
        {
            DialogResult DR = DialogResult.Cancel;

            try
            {
                if (SetPictures.Images == null)
                {
                    SetPictures = ReturnOriginResolutionThumbnailsForAsset(_asset);
                }

                myPictureBox1.LoadSavedRegions();

                DR = this.ShowDialog();

                if (DR == DialogResult.OK)
                {
                    myPictureBox1.SaveRegions();
                }
            }

            catch
            {
            }


            return(DR);
        }
コード例 #2
0
        static ResultAnalysisAsset ReturnOriginResolutionThumbnailsForAsset(IAsset asset) // null if not existing
        {
            var result = new ResultAnalysisAsset();


            string filenameJPG = asset.Id.Substring(Constants.AssetIdPrefix.Length) + "_OriginalRes_000001.jpg";
            string path        = Path.GetTempPath();
            string pathandfile = Path.Combine(path, filenameJPG);
            //c7508b75-a451-4887-9435-4a5b39f88c5f_OriginalRes_000001.jpg
            //c7508b75-a451-4887-9435-4a5b39f88c5f_metadata.xml
            var filesJPG = asset.GetMediaContext().Files.Where(f => f.Name == filenameJPG).OrderBy(f => f.LastModified);
            var fileJPG  = filesJPG.FirstOrDefault();

            if (fileJPG == null)
            {
                result.Error = true;
                return(result);
            }

            string filenameMetadata = asset.Id.Substring(Constants.AssetIdPrefix.Length) + "_metadata.xml";
            var    metadataFile     = fileJPG.Asset.AssetFiles.Where(f => f.Name == filenameMetadata).FirstOrDefault();

            if (metadataFile == null)
            {
                result.Error = true;
                return(result);
            }

            ILocator saslocator = null;

            try
            {
                // The duration for the locator's access policy.
                var policy = asset.GetMediaContext().AccessPolicies.Create("AP AMSE", new TimeSpan(0, 15, 0), AccessPermissions.Read);
                saslocator = asset.GetMediaContext().Locators.CreateLocator(LocatorType.Sas, fileJPG.Asset, policy, DateTime.UtcNow.AddMinutes(-5));


                // Get original video size from metadata
                XDocument doc = XDocument.Load(metadataFile.GetSasUri().ToString());

                XNamespace ns = "http://schemas.microsoft.com/windowsazure/mediaservices/2014/07/mediaencoder/inputmetadata";

                var bodyxml = doc.Element(ns + "AssetFiles").Element(ns + "AssetFile").Element(ns + "VideoTracks").Element(ns + "VideoTrack");

                result.OriginalSize = new Size(int.Parse(bodyxml.Attribute("Width").Value), int.Parse(bodyxml.Attribute("Height").Value));

                // Thumbnails
                IEnumerable <IAssetFile> Thumbnails = fileJPG.Asset.AssetFiles.ToList().Where(f => f.Name.StartsWith(asset.Id.Substring(Constants.AssetIdPrefix.Length) + "_OriginalRes_") && f.Name.EndsWith(".jpg")).OrderBy(f => f.Name);

                // Generate the Progressive Download URLs for each file.
                List <Uri> ProgressiveDownloadUris = Thumbnails.Select(af => af.GetSasUri()).ToList();

                foreach (var urli in ProgressiveDownloadUris)
                {
                    var request = WebRequest.Create(urli.AbsoluteUri);

                    using (var response = request.GetResponse())
                        using (var stream = response.GetResponseStream())
                        {
                            result.Images.Add(Bitmap.FromStream(stream));
                        }
                }
            }
            catch (Exception e)
            {
                result.Error = true;
            }


            try
            {
                if (saslocator != null)
                {
                    saslocator.Delete();
                }
            }

            catch (Exception e)
            { }



            return(result);
        }