Esempio n. 1
0
 void loadAsset(AVAsset asset, string[] assetKeysToLoad, DispatchGroup dispatchGroup)
 {
     dispatchGroup.Enter();
     asset.LoadValuesAsynchronously(assetKeysToLoad, () => {
         foreach (var key in assetKeysToLoad)
         {
             NSError error;
             if (asset.StatusOfValue(key, out error) == AVKeyValueStatus.Failed)
             {
                 Console.Error.WriteLine("Key value loading failed for key" + key + " with error: " + error.ToString());
                 dispatchGroup.Leave();
             }
         }
         if (!asset.Composable)
         {
             Console.Error.WriteLine("Asset is not composable");
             dispatchGroup.Leave();
         }
         Clips.Add(asset);
         ClipTimeRanges.Add(NSValue.FromCMTimeRange(new CMTimeRange()
         {
             Start    = CMTime.FromSeconds(0, 1),
             Duration = CMTime.FromSeconds(5, 1)
         }));
         dispatchGroup.Leave();
     });
 }
Esempio n. 2
0
        private void LoadAsset(AVAsset asset, string[] assetKeysToLoad, DispatchGroup dispatchGroup)
        {
            dispatchGroup.Enter();
            asset.LoadValuesAsynchronously(assetKeysToLoad, () =>
            {
                // First test whether the values of each of the keys we need have been successfully loaded.
                foreach (var key in assetKeysToLoad)
                {
                    if (asset.StatusOfValue(key, out NSError error) == AVKeyValueStatus.Failed)
                    {
                        Console.WriteLine($"Key value loading failed for key:{key} with error: {error?.LocalizedDescription ?? ""}");
                        goto bail;
                    }
                }

                if (!asset.Composable)
                {
                    Console.WriteLine("Asset is not composable");
                    goto bail;
                }

                this.clips.Add(asset);
                // This code assumes that both assets are atleast 5 seconds long.
                var value = NSValue.FromCMTimeRange(new CMTimeRange {
                    Start = CMTime.FromSeconds(0, 1), Duration = CMTime.FromSeconds(5, 1)
                });
                this.clipTimeRanges.Add(value);

                bail:
                dispatchGroup.Leave();
            });
        }