iPhone MPMoviePlayerController在真实设备上播放视频时丢失了声音

时间:2010-03-31 17:36:17

标签: objective-c iphone audio mpmovieplayercontroller audio-player

我遇到了在播放时丢失“视频”声音的问题。

我遵循了所有标准,但视频/音频有时会被静音或在视频文件的末尾消失。我不知道为什么。有谁知道可能是什么问题?

这只发生在真实设备上运行应用程序时,我无法在模拟器上重现该问题。

“didReceiveMemory”警告会导致这种情况吗?有时我会收到这条消息。

视频文件通过URL地址流式传输,格式为MPEG-4 Movie,大小小于6.2 MB。

我有以下代码:

- (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 :(得分:0)

你应该尝试一个不同的MP4文件,它们并不完全相同 - 如果你是从Quicktime创建它们,它们应该针对流进行优化 - 如果你在mp4box的帮助下创建它们,则“暗示”。您的文件音频时间戳可能存在问题 - 如果出现任何问题,请尝试通过Safari浏览器和/或快速播放。我猜您也会遵循H264和AAC的最大比特率/配置文件/级别设置。

如果您的手机中的内存确实不足,可能会发生这种情况,媒体播放器会在您的应用程序中以不同的方式运行(我想允许它使用GPU解码器和沙盒)。 您是否只在应用中播放此视频一次?您之后是否删除了通知? - 通常在播放视频之前只注册一次就足够了。

某些东西取决于你在哪个固件下编译和运行,在以后的版本中,错误往往会得到修复,但是从4.0整个API改变了,代码也需要更新......

警告信息对于模拟器来说是无用且常见的 - 它们只是来自模拟器,试图触及SDK外部模块的调试符号 - 因为模拟器的Quicktime会在桌面Quicktime中运行 - 您可能会看到声卡驱动程序和更多编解码器依赖于你的设置。