Не могу искать с MPMoviePlayerController - PullRequest
3 голосов
/ 30 апреля 2011

Я собираюсь искать временную шкалу в MPMediaPlayerController.

Я пытался с недокументированным методом setCurrentTime для MPMediaPlayerController следующим образом.

[player setCurrentTime:1.f];

Затем яблоко падает с следующим ...

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MPMoviePlayerController setCurrentTime:]: unrecognized selector sent to instance 0x5619fe0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00f59be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x010ae5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00f5b6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00ecb366 ___forwarding___ + 966
    4   CoreFoundation                      0x00ecaf22 _CF_forwarding_prep_0 + 50
    5   MPlayerExample                      0x0000227d -[MPlayerExampleViewController PauseVideo] + 69
    6   Foundation                          0x000367f6 __NSFireDelayedPerform + 441
    7   CoreFoundation                      0x00f3afe3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
    8   CoreFoundation                      0x00f3c594 __CFRunLoopDoTimer + 1220
    9   CoreFoundation                      0x00e98cc9 __CFRunLoopRun + 1817
    10  CoreFoundation                      0x00e98240 CFRunLoopRunSpecific + 208
    11  CoreFoundation                      0x00e98161 CFRunLoopRunInMode + 97
    12  GraphicsServices                    0x0188e268 GSEventRunModal + 217
    13  GraphicsServices                    0x0188e32d GSEventRun + 115
    14  UIKit                               0x002c642e UIApplicationMain + 1160
    15  MPlayerExample                      0x00001fe4 main + 102
    16  MPlayerExample                      0x00001f75 start + 53
)
terminate called after throwing an instance of 'NSException'

Ответы [ 3 ]

11 голосов
/ 01 мая 2011

Вы можете искать MPMoviePlayerController, используя свойство currentPlaybackTime, которое задокументировано в Справочнике по протоколу MPMediaPlayback .

Таким образом, ваш код будет выглядеть так:

[player setCurrentPlaybackTime:1.0];
1 голос
/ 26 февраля 2016

вот код, который будет работать для поиска видео в MPMoviePlayer с помощью пользовательского слайдера

//create slider  

slider1 = [[UISlider alloc] initWithFrame:CGRectMake(85, 435, 150,30)];
    [slider1 addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
    [slider1 setBackgroundColor:[UIColor clearColor]];
    slider1.minimumValue = 0;
    slider1.continuous = YES;

    [self.view addSubview:slider1];

// Set slider max value as moviePlayerController Total Duration and Current (Set Value ) as slider Value

-(void)sliderAction:(id)sender
{
    UISlider *slider = (UISlider*)sender;
    float value = slider.value;

    slider.maximumValue =  self.moviePlayerController.duration;

    self.moviePlayerController.currentPlaybackTime = value;


}
1 голос
/ 30 апреля 2011

Это недокументированный API ... он не гарантированно работает.На самом деле, вы не должны этого ожидать.Вполне возможно, что Apple удалила его из обновления ОС, и теперь этот метод не существует.

Если это имеет значение, вы передаете его поплавком, и я думаю, что он ожидает удвоения.Возможно, поэтому у вас проблемы.Но если вы пишете приложение для распространения в магазине приложений, нет смысла продолжать расследование - ваше приложение будет отклонено.Apple автоматически статически анализирует код при отправке, любое использование непубличных API приведет к тому, что ваше приложение будет возвращено вам обратно.

...