Видео играет, но без картинки - просто звук?
-
02-10-2019 - |
Вопрос
Редактировать: Если вы столкнетесь с этим и хотите знать, как я в конце концов решил, что я сдался в этом коде ниже и сделал это:
-(void)playMovieAtURL:(NSURL*)theURL{
mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:theURL];
[self presentMoviePlayerViewControllerAnimated:mediaPlayer];
mediaPlayer.view.backgroundColor = [UIColor blackColor];
}
Оригинальный пост:
Это мой код - я снял его с сайта Apple, поэтому не должен быть проблемой.
Он работает в UiableViewController на методе DadelectrowatindexPath.
Когда вы выбираете строку, видео начинает воспроизведение - звуковые выходы по меньшей мере - но нет изображения. Есть идеи, почему это? Я включил структуру.
Видео составляет один с сайта Apple (видео FaceTime), который я использовал для тестирования.
-(void)playMovieAtURL:(NSURL*)theURL{
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleNone;
// Register for the playback finished notification
[[NSNotificationCenter defaultCenter]
addObserver: self
selector: @selector(myMovieFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
// Movie playback is asynchronous, so this method returns immediately.
[theMovie play];
}
Решение
Поведение MPMOViePlayerController изменилось в ОС 3.2 - вам нужно явно добавить вид фильма на свою просмотр иерархии сейчас - используя что-то вроде:
[aView addSubview:moviePlayerController.view];
moviePlayerController.view.frame = aView.frame;
В качестве альтернативы вы можете использовать MPMOViePlayerviewController (новый в 3.2) для управления представлением.
Если вы нацеливаете как до- и Post-3.2 устройства (например, IOS 3.1 и 4.0), то вам понадобится условный код для определения ОС, который работает и обрабатывается соответственно. Я использовал это в предыдущих проектах:
if ([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)]) {
// Running on OS 3.2 or above
// Code to add to a view here...
}