Mp4文件无法播放

时间:2016-10-21 08:51:38

标签: ios objective-c video

我有一个splash_screen.mp4文件。

以下是.h文件

中的代码
@property AVPlayer * player;
@property AVPlayerLayer * playerLayer;
<{1>}文件中的

.m

在过去,我有一个.mov文件,可以播放视频文件,但现在我有一个.mp4文件,无法播放。

在模拟器上测试,视频会运行,但在设备上,它不会运行。

3 个答案:

答案 0 :(得分:0)

您需要在右侧面板中为mp4文件选择“目标成员资格”。

&#xA;&#xA;
    &#xA;
  1. 选择MP4文件
  2. &#xA;
&#xA;&#xA;

2。看截图。

&#xA;&#xA;

&#xA;

答案 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];
    }

}

请你试试吧。如果我们需要通过其他方式处理它,请发表您的评论。另外,请检查视频文件是否有效并有内容。