2012-03-28 22 views
0

Ich muss einen Film abspielen, der bereits von iTunes mit Apples 'Movies' App auf einem iPad in einer Ansicht synchronisiert wurde.Abspielen eines Films von MPMediaItem (iPad/IOS5)

Ich kann einen Film aus dem Bundle mit MPMoviePlayerController OK spielen. Ich kann ein Medienelement aller Filme erhalten (NSArray von MPMediaItems verwendet MPMediaQuery). Der MPMoviePlayerController akzeptiert jedoch nur eine NSURL - kein MPMediaItem.

Also, wie kann ich einen Film abspielen, wenn alles, was ich habe, ein MPMediaItem des Films ist? Gibt es ein anderes Objekt als MPMoviePlayerController, das dies tut? In mehreren Beiträgen wird erläutert, wie ein Medienelement "abgerufen" wird, aber nicht, wie ein Element "eingerichtet" wird.

Jede Hilfe wird sehr geschätzt.

Antwort

2

Jede MPMediaItem hat eine URL, auf die mit valueForProperty: zugegriffen werden kann.

Ich weiß nicht, ob Sie das verwenden können, um es in MPMoviePlayerController obwohl zu spielen. In der Theorie sollte es funktionieren.

NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL]; 

EDIT: Sieht aus wie es nicht möglich ist, dass zu verwenden.

MPMediaItemPropertyAssetURL
eine URL zum Medienelement zeigt, aus dem ein AVAsset Objekt (oder eine andere URL-basierten AV Foundation Objekts) erzeugt werden kann, mit allen möglichen Optionen, wie gewünscht. Wert ist ein NSURL-Objekt.
Die URL hat das benutzerdefinierte Schema von ipod-library. Eine URL könnte beispielsweise wie folgt aussehen: ipod-library: //item/item.m4a? Id = 12345
Die Verwendung der URL außerhalb des AV Foundation-Frameworks wird nicht unterstützt.

aus: General Media Item Property Keys

+0

Dank dieses hat gearbeitet! Es hätte lange gedauert, um herauszufinden "[mediaItem valueForProperty: MPMediaItemPropertyAssetURL]" - Nicht sehr intuitiv. –

2

Versuchen Sie, diese

NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: url]; 
[player prepareToPlay]; 
[player.view setFrame: myView.bounds]; // player's frame must match parent's 
[myView addSubview: player.view]; 
[player play]; 

Ich denke, das sollte funktionieren ..

MPMediaItem von MPMediaEntity geerbt, die das Verfahren valueForProperty hat:

+0

Danke, Sie und Matthias unten gaben eine Lösung –