objective-c - iPhone MPMoviePlayerController 在真实设备上播放视频时失去声音

标签 objective-c iphone audio mpmovieplayercontroller audio-player

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

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

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

“didReceiveMemory”警告会导致这种情况吗?当它发生时,我有时会收到此消息。

视频文件通过 URL 地址进行流式传输,格式为 MPEG-4 电影,大小小于 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]

最佳答案

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

如果你的手机内存真的用完了,这可能会发生,媒体播放器在单独的进程中运行——而不是直接在你的应用程序中运行(我想允许它使用 GPU 解码器和沙箱)。
您是否只在应用程序中播放此视频一次?之后你会删除通知吗? - 通常在播放视频之前只需注册一次就足够了。

取决于您在哪个固件下编译和运行,错误往往会在以后的版本中修复,但从 4.0 开始,整个 API 发生了变化,代码也需要更新......

警告消息对于模拟器来说是无用且常见的 - 它们只是来自模拟器试图达到 SDK 之外模块的调试符号 - 因为模拟器的 Quicktime 通过您的桌面 Quicktime 运行 - 您可能会在那里看到您的声卡驱动程序和更多编解码器,具体取决于您的设置。

关于objective-c - iPhone MPMoviePlayerController 在真实设备上播放视频时失去声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555133/

相关文章:

ios - UIScrollview 无法识别从屏幕边缘滑动

ios - 无法将使用代码创建的 socket 连接到静态单元格

ios - 在 iOS 的 SWRevealController 中保持 View Controller 的保存状态?

iphone - 绘制白色会产生透明色

iphone - 断言宏 : queueEntry error -ios

android - 当我锁定屏幕时,Android 上的 OpenSL 音频停止 5.0.1 OK 6.0.1 Not OK

IOS GoogleDrive API - 通过 1 次执行获取子文件夹中的所有文件

iOS 应用程序切片或细化不起作用

android - 使用蓝牙耳机将蓝牙耳机用作可移植摄像机的扩展麦克风

c# - 如何枚举为应用程序注册的声音?