iPhone MPMoviePlayerController потерял звук при воспроизведении видео на реальном устройстве - PullRequest
2 голосов
/ 31 марта 2010

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

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

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

Может ли это вызвать предупреждение "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]

1 Ответ

0 голосов
/ 04 января 2011

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

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

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

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

...