我正在尝试将采访列表添加到Xamarin.iOS中的AVQueuePlayer,这对我有用。但是,我确实需要能够从用于创建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更新一些标签。从采访中的AudioID创建AVPlayerItem之后,有什么方法可以访问这些属性?
我唯一能找到的就是MetaData,但是我的音频文件不包含任何元数据。
最佳答案
您不能将任意数据附加到排队的AVPlayerItem对象,因此一种解决方案是将任意数据与AVPlayerItem对象关联。例如,如果从AVURLAsset开始生成AVPlayerItem,则AVPlayerItem具有一个asset
,因为它是一个AVURLAsset,所以它具有一个URL
,所以现在我们可以想象一个NSDictionary,其中的键是URL和这些值是对应的Interview对象。
关于ios - AVQueuePlayer的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23225814/