用640x1136 mp4替换480x640 mp4将无法播放

时间:2013-12-05 18:33:24

标签: video mpmovieplayercontroller

我是编码的初学者。

我制作的应用程序在启动时播放480x640 mp4。决定更换一个更大的视频,以便在更大的iPhone上看起来更好。导入新的640x 1136 mp4,替换了代码中的名称,改变了setFrame的大小:CGRectMake。在启动时它以黑色播放 - 好像moviePlayer处于错误的位置。

有趣的是,我在程序后面有完全相同的代码(“按一个按钮来重放打开的视频”)并且工作正常。

我的初始moviePlayer的大小或位置有什么问题?


只是想通了如果我将观众的大小从(0,0,640,1136)缩小到(0,0,320,568),它就会很好。再次,在程序的后面,我有观察者(0,0,640,1136)。为什么相同的mp4在两种不同的观看者尺寸下播放?


由于

- (void)viewDidLoad
{
    //
    // backGround image
    //
    UIImage *backGround1 = [UIImage imageNamed:@"TableWButtons6401136.png"];
    [backGround setImage:backGround1];


    //
    // This code plays the video at start up
    //
    NSString *videoFile = [[NSBundle mainBundle] pathForResource:@"WFBD4" ofType:@"mp4"];
    moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:videoFile]];
    [moviePlayer.view setFrame:CGRectMake(0, 0, 640, 1136)];
    [self.view addSubview:moviePlayer.view];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:moviePlayer];

    moviePlayer.fullscreen = YES;
    moviePlayer.allowsAirPlay  = YES;
    moviePlayer.controlStyle = MPMovieControlStyleNone;
    [moviePlayer play] ;
    NSLog(@"Playback Finished");





    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

1 个答案:

答案 0 :(得分:0)

传递给setFrame的坐标位于 Points 中,而不是设备像素。这些点是逻辑像素;相同的尺寸和位置适用于Retina和非Retina设备。 iPhone 5+具有320x568点,但设备像素为640x1136。

因此,使用320x568调用setFrame是正确的做法。虽然你没有显示重播按钮的代码,但我猜想,在那个例子中,播放器视图正在被一些自动布局逻辑调整大小。