Свойства с AVQueuePlayer

Я пытаюсь добавить список интервью в AVQueuePlayer в Xamarin.iOS, и это работает для меня. Однако мне нужно иметь возможность получить некоторые свойства из класса, который я использую для создания AVPlayerItems.

Мой класс интервью:

public class Interview
    {
        public int Id { get; set; }
        public Topic Topic { get; set; }
        public Person Person { get; set; }
        public string VideoURL { get; set; }
        public int AudioID { get; set; }

        public Interview ()
        {
        }

        public Interview (int id, Topic t, Person p, string videoUrl, int audioId)
        {
            Id = id;
            Topic = t;
            Person = p;
            VideoURL = videoUrl;
            AudioID = audioId;
        }

У меня есть метод в моем PlayerClass, который выглядит так:

void AudioPlayWithAVQueuePlayer ()
        {
            Console.WriteLine ("AVPlayer");
            var center = NSNotificationCenter.DefaultCenter;
            //int pointer = 0;
            List<AVPlayerItem> playeritems = new List<AVPlayerItem>();
            foreach (Interview i in appDelegate.currentlyPlaying.Interviews) {
                AVAsset _asset;
                AVPlayerItem _playerItem;
                _asset = AVAsset.FromUrl (new NSUrl ("https://api.soundcloud.com/tracks/" + i.AudioID + "/stream?client_id=clientID&oauth_token=token"));


                _playerItem = new AVPlayerItem (_asset);

                playeritems.Add (_playerItem);
            }

            appDelegate.avPlayer = new AVQueuePlayer (playeritems.ToArray());
            appDelegate.avPlayer.Play ();
            }
        }

Это будет отлично воспроизводить мои аудиофайлы (хранящиеся в SoundCloud), но мне нужно обновить некоторые метки с помощью Interview.Person.PersonName и Interview.Topic.TopicName. Есть ли способ получить доступ к этим свойствам после того, как я создал AVPlayerItem из AudioID в интервью? Единственное, что мне удалось найти, это метаданные, но мои аудиофайлы не содержат никаких метаданных.


person catu    schedule 22.04.2014    source источник


Ответы (1)


Вы не можете присоединять произвольные данные к объектам AVPlayerItem, поставленным в очередь, поэтому одним из решений является связывание произвольных данных с объектами AVPlayerItem каким-либо другим способом. Например, если вы начинаете с AVURLAsset для создания своего AVPlayerItem, то у AVPlayerItem есть asset, который (поскольку это AVURLAsset) имеет URL, так что теперь мы можем представить NSDictionary, где ключами являются URL-адреса, а значения соответствуют Объекты интервью.

person matt    schedule 22.04.2014
comment
Прохладный. Имеет большой смысл, и это было легко сделать. Большое спасибо. - person catu; 24.04.2014