gpt4 book ai didi

ipad - iOS5:MPMoviePlayerController 仅视频,无音频

转载 作者:行者123 更新时间:2023-12-04 09:32:51 25 4
gpt4 key购买 nike

这不是没有视频,只有音频的问题。这只是 对面 .
使用iOS 5.0时出现问题。运行 4.3 或更低版本的 iPad 可以完美播放相同的视频文件。

由于 iOS 5 改变了为 MPMoviePlayerControllers 初始化东西的方式,我必须做一些基于 SDK 的编程才能显示视频。在实现我接下来展示的代码片段之前,视频及其控件甚至不会显示在屏幕上。 Controller 将只显示一个黑色方块,其大小和原点为给定的 CGRect 框架。

我的处理方式如下:

视频文件位于文档文件夹中。所以NSURL 必须被初始化为fileURLWithPath。完成后,我继续使用给定的帧初始化 Controller 。由于它不会以其他方式工作,因此 View 只会在更改其 loadState 后添加播放器。这是通过订阅通知来实现的。订阅者选择器将 Controller 的 View 添加到父 View 在主线程 因为可以从其他线程处理通知。

初始化视频并将其添加到 View 中:

-(void)addVideo:(NSString*) videoName onRect:(CGRect)rect {

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

iPadMagazineAppDelegate *appDelegate = GET_APP_DELEGATE;
NSArray *dirArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dirName = [dirArray objectAtIndex:0];

// get directory name for this issue
NSURL *baseURL;

/*
BUGFIX: Video does not work on iOS 5.0

*/
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.0")){
baseURL = [[NSURL fileURLWithPath:dirName]URLByAppendingPathComponent:[appDelegate.currentIssue getIssueDirectoryName ]];
}else {
baseURL = [[NSURL URLWithString:dirName] URLByAppendingPathComponent:[appDelegate.currentIssue getIssueDirectoryName]];
}

/* end BUGFIX: Video does not work on iOS 5.0 */

NSURL *videoURL = [baseURL URLByAppendingPathComponent:videoName];


MPMoviePlayerController * movieController= [[MPMoviePlayerController alloc]initWithContentURL:videoURL];

// set frame for player
movieController.view.frame = rect;

// set auto resizing masks
[movieController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];

// don't auto play.
[movieController setShouldAutoplay:NO];

[movieController setUseApplicationAudioSession:YES];

/*
BUGFIX: Video does not work on iOS 5.0
*/
if (SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(@"5.0")) {
[movieController prepareToPlay];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadVideo:) name:MPMoviePlayerLoadStateDidChangeNotification object:movieController];
}else {
[pdfView addSubview:movieController.view];
[pdfView bringSubviewToFront: movieController.view];
}

/* end BUGFIX: Video does not work on iOS 5.0 */

[_moviePlayerViewControllerArray addObject:movieController];
[movieController release];
[pool release];
}

通知处理程序:
-(void)loadVideo:(NSNotification*)notification {

for (MPMoviePlayerController *movieController in _moviePlayerViewControllerArray) {

if (movieController.loadState != MPMovieLoadStateUnknown) {


[pdfView performSelectorOnMainThread:@selector(addSubview:) withObject:movieController.view waitUntilDone:YES];
[pdfView performSelectorOnMainThread:@selector(bringSubviewToFront:) withObject:movieController.view waitUntilDone:YES];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:movieController];
}
}

}

感谢您阅读这个巨大的问题。我很欣赏你的回答。

干杯。

最佳答案

尝试这个:
将 MPMoviePlayerController 的属性“useApplicationAudioSession”设置为“NO”。

关于ipad - iOS5:MPMoviePlayerController 仅视频,无音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com