| 

.NET C# Java Javascript Exception

1
Hallo zusammen.

Ich hab einige *.mp4 Video in dem Ordner videos in meinem Documents Verzeichnis.
Die Videos werden in einem UITableView angezeigt und sobald ich auf eine der Zellen tippe soll das Video abgespielt werden.
Ich verwende dafür folgenden Code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
log_muma2(@"_ma_content: %@", _ma_content);
NSString *path = [[_ma_content objectAtIndex:indexPath.row]objectForKey:k_key_path];
path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url_video = [NSURL fileURLWithPath:path];
log_muma2(@"url_video: %@", url_video);



_movieVCPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:url_video];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:_movieVCPlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayerLoadingStatusChanged:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:_movieVCPlayer];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayerDidEnterFullScreen:)
name:MPMoviePlayerDidEnterFullscreenNotification
object:_movieVCPlayer];


[self presentMoviePlayerViewControllerAnimated:_movieVCPlayer];
if ([_movieVCPlayer.moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
_movieVCPlayer.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
_movieVCPlayer.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_movieVCPlayer.moviePlayer.shouldAutoplay = YES;
[_movieVCPlayer.moviePlayer setFullscreen:YES animated:YES];
[_movieVCPlayer.moviePlayer prepareToPlay];
}
else {
// Use the old 2.0 style API
[_movieVCPlayer.moviePlayer play];
}
}


Hier sind die Notification Methods
#pragma mark - videoPlayer

- (void) moviePlayBackDidFinish:(NSNotification*)notification {
log_muma(@"Player did finish playing");
MPMoviePlayerController *mymoviePlayer = [notification object];
// If the moviePlayer.view was added to the view, it needs to be removed
if ([mymoviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
[mymoviePlayer.view removeFromSuperview];
}
}

- (void) moviePlayerLoadingStatusChanged:(NSNotification*) notification
{
log_muma(@"Player did change its loadingstate");
MPMoviePlayerController *mymoviePlayer = [notification object];
if (mymoviePlayer.loadState == MPMovieLoadStatePlayable) {
log_muma(@"Player did finish Loading");
[mymoviePlayer play];
}
}

-(void) moviePlayerDidEnterFullScreen: (NSNotification*) notification
{
log_muma(@"Player has entered Fullscreen");
}


Eigentlich sollte jetzt sobald ich auf die Zelle klicke das video geladen werden, eine loadingStateDidChange Notification auslösen, welche die Methode
- (void) moviePlayerLoadingStatusChanged:(NSNotification*) notification

ausführt.

Leider wird beim Tippen auf eine Zelle nur der Videocontroller Modal eingeblendet und sofort wieder ausgeblendet. Notifications werden keine geworfen, obwohl eigentlich doch zumindest die moviePlayerDidEnterFullScreen Notification triggern sollte.

Der MovieViewController ist als Property mit dem Attribut STRONG definiert und ich arbeite ausschliesslich über die in Synthesize zugewiesene Variable damit.
Die URL habe ich auch überprüft, aber hier nochmal für euch, vielleicht kann mir ja noch jemand sagen was an der url falsch sein könnte.

url_video: file://localhost/Users/myusername/Library/Application%2520Support/iPhone%2520Simulator/5.0/Applications/2EC654E5-7775-4BB9-8311-59B0A6CB68E5/Documents/videos/LOTW%252015%2520Funk-Groove%25203%2520WS.mp4



Das Video an sich ist in Ordnung. Zumindest wird es von Quicktime problemlos abgespielt.

Ich weiß ehrlich gesagt nicht mehr woran das liegen könnte, dass sich der Player so komisch verhält.
Vielleicht kann mir ja einer von euch einen Tip geben.

Viele Grüße,
Niko
22.03.2012
Maverick1st 332 1 7
1
Vielleicht liegt das an dem Pfad? Du kannst es ja testen mit [[NSFileManager defaultManager] fileExistsAtPath:file_name_with_path]. Klappt es denn, wenn du den Player mit einer externen URL initialisierst?
puls200 22.03.2012
1 Antwort
0
So. Hier die Lösung.
Der Pfad war zwar in Ordnung, aber man sollte eine File-URL einfach nicht escapen.
Folgende Zeile entfernt
path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

und schon liefs. :)
18.04.2012
Maverick1st 332 1 7

Stelle deine Iphone-Frage jetzt!