Воспроизведение видео на экране нестандартного размера - просмотр в iPhone

StackOverflow https://stackoverflow.com/questions/1422930

Вопрос

Предположим, пользователь нажимает на кнопку, и видео начинает воспроизводиться. Теперь, когда видео воспроизводится, оно всегда в полноэкранном режиме.

Видео должно воспроизводиться в портретном режиме (но обычно видео воспроизводится в альбомном режиме). Как я могу это сделать?

Это было полезно?

Решение

@interface MPMoviePlayerController (extend) 
 -(void)setOrientation:(int)orientation animated:(BOOL)value; 
@end 

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR]; 
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO]; 
if (moviePlayer) 
{ 
    [self.moviePlayer play]; 
} 

Это решение будет отклонено Apple, поскольку setOrientation для проигрывателя фильмов является частным API. Вы должны быть осторожны, но это может работать на iPhone от Jailbroke.

Другие советы

Просто обновление, последний iPhone SDK 3.2+ теперь позволяет программистам показывать видео в любом желаемом размере и ориентации. Предоставляется новый MPMoviePlayerView, который является свойством MPMoviePlayerController, в этом представлении будет видео, которое вы можно добавить в качестве подпредставления для вашего представления.

Из документированных документов я не думаю, что это возможно, используя встроенный медиаплеер

Попробуйте это. Я нашел что-то новое.

@interface MPMoviePlayerController (extend)
-(void)setOrientation:(int)orientation animated:(BOOL)value;
@end

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR];
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO];
if (moviePlayer)
{
    [self.moviePlayer play];
}

Вот что я сделал. Добавьте NSNotification, чтобы уведомить вас о завершении предварительной загрузки видео.

- (void)playVideoUrl:(NSString *)videoUrl {
    NSURL *url = [NSURL URLWithString:videoUrl];
    MPMoviePlayerController* theMovie=[[MPMoviePlayerController alloc]   
             initWithContentURL:url]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 

    //MPMoviePlayerContentPreloadDidFinishNotification
    [[NSNotificationCenter defaultCenter] addObserver:self                           
                       selector:@selector(myMovieFinishedPreloading:)                                            
                           name:MPMoviePlayerContentPreloadDidFinishNotification                                                
                         object:theMovie]; 


    // Movie playback is asynchronous, so this method returns immediately. 
    [theMovie play]; 
     }

Селектор обратного вызова:

-(void)myMovieFinishedPreloading:(NSNotification*)aNotification  {
    NSArray *windows = [[UIApplication sharedApplication] windows];

    UIWindow *moviePlayerWindow = nil;
    if ([windows count] > 1) 
    {
        moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
    }

    CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
    transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
    [moviePlayerWindow setTransform:transform];

 }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top