iPhone MPMoviePlayerController пропал звук при воспроизведении видео на реальном устройстве

У меня проблема с пропаданием звука "видео" во время его воспроизведения.

Я следовал всем стандартам, но видео/аудио иногда приглушается или просто исчезает в конце видеофайла. Понятия не имею почему. Кто-нибудь знает, в чем может быть дело?

Это происходит только при запуске приложения на реальном устройстве, я не могу воспроизвести проблему на симуляторе.

Может ли это быть вызвано предупреждением «didReceiveMemory»? Я иногда получаю это сообщение, когда это происходит.

Видеофайл передается через URL-адрес, формат MPEG-4 Movie, размер менее 6,2 МБ.

У меня есть следующий код:

- (IBAction) playMovie:(NSString*)theUrl
           setMovieType:(NSString *)theType
          setPlayOption:(int)theOption
setSenderUIButton:(UIButton *)  thisSender
{
    NSString *getvdoUrl = [[NSString alloc]  initWithString:theUrl];
    NSURL *thisVdoURL = [NSURL  URLWithString:getvdoUrl];
    [getvdoUrl release];
    getvdoUrl =  nil;
    MPMoviePlayerController *movieplayer =  [[MPMoviePlayerController alloc]
                        initWithContentURL:thisVdoURL];       
    thisVdoURL = nil;
     if (movieplayer)
    {
        self.vdoPlayer = movieplayer;
         [movieplayer release];
        [[NSNotificationCenter defaultCenter]  addObserver:self
                                                  selector:@selector(moviePlayBackDidFinish:)
                                                      name:MPMoviePlayerPlaybackDidFinishNotification
                                                    object:self.vdoPlayer];
        [self.vdoPlayer play];   
    }

}

-(void)  moviePlayBackDidFinish:(NSNotification*)theNotification
{



     MPMoviePlayerController *movieplayer= [theNotification object];    
      [[NSNotificationCenter defaultCenter] removeObserver:self
      name:MPMoviePlayerPlaybackDidFinishNotification
      object:movieplayer];   
    movieplayer.initialPlaybackTime =  0.0;   
    [movieplayer stop];           
}

Ниже приведены предупреждающие сообщения. Я получил их до того, как видеофайл начал воспроизводиться:

warning:  Unable to read symbols for 
"/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3
(7E18)/Symbols/System/Library/VideoDecoders/VCH263.videodecoder"
(file  not found).


warning: Unable to read symbols for 
"/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3
(7E18)/Symbols/System/Library/VideoDecoders/H264H1.videodecoder"
(file  not found).


warning: Unable to read symbols for 
"/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3
(7E18)/Symbols/System/Library/VideoDecoders/MP4VH1.videodecoder"
(file  not found).

2010-03-29 16:57:25.830 ....
v2[4663:207] setting 
file:///private/var/mobile/Applications/7DCB1FCC-7268-4551-B737-8B418CA4A07E/tmp/MediaCache/[html]

person wannamobile    schedule 31.03.2010    source источник


Ответы (1)


Вы должны попробовать другой файл MP4, они не все одинаковы - они должны быть оптимизированы для потоковой передачи, если вы создаете их из Quicktime - "намекает", если вы создаете их с помощью, например, mp4box. Может быть проблема с временными метками аудиофайла — попробуйте воспроизвести его через браузер Safari и/или QuickTime, если возникнут какие-либо проблемы. Я предполагаю, что вы следуете максимальным настройкам битрейта/профиля/уровня для H264 и AAC.

Если у вас действительно не хватает памяти в вашем телефоне, это может случиться, медиаплеер работает в отдельном процессе, а не непосредственно в вашем приложении (я думаю, чтобы позволить ему использовать декодер GPU и песочницу). Вы воспроизводите это видео только один раз в приложении? Вы удаляете уведомление после этого? - обычно достаточно один раз зарегистрировать его еще до воспроизведения видео.

Кое-что зависит от того, под какой прошивкой вы компилируете и работаете, ошибки, как правило, исправляются в более поздних версиях, но с 4.0 весь API изменился, и код также нуждается в обновлении...

Предупреждающие сообщения бесполезны и распространены для симулятора - они просто от симулятора, пытающегося получить отладочные символы для модулей вне SDK - поскольку Quicktime симулятора работает через Quicktime вашего рабочего стола - вы можете увидеть драйвер звуковой карты и другие кодеки там в зависимости от вашей настройки.

person PetrV    schedule 04.01.2011