我使用 MPMoviePlayerViewController 播放格式为 3gp 的视频。有些视频可以播放,有些则无法播放。 MPMoviePlayerViewController 将立即加载并结束,就像视频的时长为 0 秒一样。 我认为视频一定有问题。但我用iphone的相册里面的视频播放器,它可以播放视频! 所以我想也许 MPMoviePlayerViewController 并不强大。我想尝试使用 avfoundation 框架 avplayer 来播放视频。在我的内容 View 中添加一个子图层。失败的.. 这让我发疯!有人遇到过一些问题吗?
这是我的代码
-(void) playMovieWithSDK: (NSURL*) movieUrl
{
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 3.2) {
MPMoviePlayerViewController *mSdk4Player = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];
mSdk4Player.navigationController.navigationBar.tag = 1000;
if (mSdk4Player) {
[self presentMoviePlayerViewControllerAnimated:mSdk4Player];
mSdk4Player.moviePlayer.scalingMode= MPMovieScalingModeAspectFit;
mSdk4Player.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
mSdk4Player.moviePlayer.shouldAutoplay = YES;
[mSdk4Player release];
[[NSNotificationCenter defaultCenter]addObserver: self
selector: @selector(movieFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: mSdk4Player.moviePlayer];
}
}
else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) { // sdk 3.0 播放器
MPMoviePlayerController* mSdk3player = [[MPMoviePlayerController alloc] initWithContentURL: movieUrl];
mSdk3player.scalingMode = MPMovieScalingModeAspectFit;
[[NSNotificationCenter defaultCenter]addObserver: self
selector: @selector(movieFinishedCallback:)
name: MPMoviePlayerPlaybackDidFinishNotification
object: mSdk3player];
[mSdk3player play];
}
}
最佳答案
您尝试播放的视频可能与 MPMoviePlayerController 支持的基本编解码器不兼容。
此类播放 iOS 支持的任何电影或音频文件。这包括流式内容和固定长度文件。对于电影文件,这通常意味着扩展名为 .mov、.mp4、.mpv 和 .3gp 并使用以下压缩标准之一的文件:
H.264 基线配置文件级别 3.0 视频,30 fps 时高达 640 x 480。 (Baseline 配置文件不支持 B 帧。)
MPEG-4 第 2 部分视频(简单配置文件)
如果您使用此类来播放音频文件,它将在音频播放时显示带有 QuickTime Logo 的白屏。对于音频文件,此类支持高达 48 kHz 的 AAC-LC 音频和高达 48 kHz 的 MP3(MPEG-1 音频层 3)立体声音频。
关于objective-c - MPMoviePlayerController 无法播放某些 3gp 格式视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12211802/