我有一个splash_screen.mp4
文件。
以下是.h
文件
@property AVPlayer * player;
@property AVPlayerLayer * playerLayer;
<{1>}文件中的:
.m
在过去,我有一个.mov文件,可以播放视频文件,但现在我有一个.mp4文件,无法播放。
在模拟器上测试,视频会运行,但在设备上,它不会运行。
答案 0 :(得分:0)
答案 1 :(得分:0)
希望这有效
Asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filePath]];
avPlayerItem =[[AVPlayerItem alloc]initWithAsset:Asset];
avPlayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem];
avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:Player];
[avPlayerLayer setFrame:self.view.frame];
[self.view.layer addSublayer:avPlayerLayer];
[avPlayer seekToTime:kCMTimeZero];
[avPlayer play];
答案 2 :(得分:0)
您是否曾尝试在其上添加观察者并在Try&amp ;;中处理它捉。
请在所需的后台模式中启用“应用播放音频或使用AirPlay播放音频/视频”。
NSURL* mURL = [[NSBundle mainBundle] URLForResource:@"splash_screen" withExtension:@"mp4"];
NSURL *url = mURL;
AVPlayer *player = [[AVPlayer alloc]initWithURL:url];
if (_audioPlayer != nil)
{
@try {
[_audioPlayer removeObserver:self forKeyPath:@"status" context:nil];
} @catch (NSException *exception) {
NSLog(@"Catch player exception");
}
}
_audioPlayer = player;
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
self.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
self.playerLayer.needsDisplayOnBoundsChange = YES;
[self.playerLayer setFrame:[self.view bounds]];
[self.view.layer addSublayer:self.playerLayer];
[_audioPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];
一旦AVPlayer拥有来自mURL的有效文件,它就会调用观察者状态准备播放。 “AVPlayerStatusReadyToPlay”
#pragma Observer for Player status.
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == _audioPlayer && [keyPath isEqualToString:@"status"]) {
if (_audioPlayer.status == AVPlayerStatusFailed) {
NSLog(@"AVPlayer Failed");
} else if (_audioPlayer.status == AVPlayerStatusReadyToPlay) {
NSLog(@"AVPlayerStatusReadyToPlay");
[_audioPlayer play];
}
} else if (_audioPlayer.status == AVPlayerItemStatusUnknown) {
NSLog(@"AVPlayer Unknown");
}
[_audioPlayer removeObserver:self forKeyPath:@"status" context:nil];
}
}
请你试试吧。如果我们需要通过其他方式处理它,请发表您的评论。另外,请检查视频文件是否有效并有内容。