我在播放“视频”声音时遇到问题。
我遵循所有标准,但视频/音频有时会静音或在视频文件末尾消失。我不知道为什么。有谁知道可能是什么问题?
这只发生在真实设备上运行应用程序时,我无法在模拟器上重现该问题。
“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/