首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PiP AVPlayerViewController issue iPhone

PiP AVPlayerViewController issue iPhone
EN

Stack Overflow用户
提问于 2018-08-01 17:26:29
回答 2查看 2.7K关注 0票数 2

我正在研究AVFoundation,我想创建一个类似于Whatsapp的东西,例如,当我在youtube上看到一段视频时,它可以在PiP模式下播放。出于这个原因,我创建了这样的viewcontroller:

代码语言:javascript
运行
复制
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>

@interface ViewController () <AVPictureInPictureControllerDelegate>

@property (strong, nonatomic) AVPlayerViewController *playerViewController;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSURL *url = [[NSURL alloc] initWithString:@"https://www.rmp-streaming.com/media/bbb-360p.mp4"];

    AVPlayerItem* playerItem = [AVPlayerItem playerItemWithURL:url];

    AVPlayer* playVideo = [[AVPlayer alloc] initWithPlayerItem:playerItem];
    self.playerViewController = [[AVPlayerViewController alloc] init];
    self.playerViewController.player = playVideo;
    self.playerViewController.player.volume = 0;
    self.playerViewController.view.frame = self.view.bounds;
    [self.view addSubview:self.playerViewController.view];
    self.playerViewController.showsPlaybackControls = YES;
    self.playerViewController.allowsPictureInPicturePlayback = YES;
    self.playerViewController.videoGravity = AVLayerVideoGravityResizeAspect;
    [playVideo play];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

在AppDelegate中,我这样做了:

代码语言:javascript
运行
复制
NSError *errore = nil;
    AVAudioSession *sessioneAudio = [AVAudioSession sharedInstance];
    [sessioneAudio setActive:YES error:&errore];
    [sessioneAudio setCategory:AVAudioSessionCategoryPlayback error:&errore];

我还在项目的功能中启用了音频、AirPlay和图片背景模式。

我的问题是:

如果我在iPad设备上运行app,我会看到PiP按钮,并且我可以启用PiP模式。如果我在iPhone设备上运行应用程序,我看不到PiP按钮,但我不明白为什么。

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 23:21:28

我已经实现了在iPhones上启用PiP模式的PiPhone框架。我想它可以解决你的问题。

票数 -1
EN

Stack Overflow用户

发布于 2020-10-21 21:38:56

  1. 是第一个通用功能-选择背景音频、AirPlay和PiP

  1. 将我的代码粘贴到Objective-C

NSString *path = [NSBundle mainBundle路径资源:@“视频”mp4类型:@“mp4”];NSURL *url = NSURL文件fileURLWithPath:路径;self.AVPlayer = AVPlayer播放器mainBundle:url;self.layer = AVPlayerLayer playerLayerWithPlayer:_AVPlayer;

self.layer设置:CGRectMake( 0,0,self.view.frame.size.width-100,self.view.frame.size.height-72);self.layer设置视频重力:AVLayerVideoGravityResize;self.view.layer addSublayer:_layer;

_AVPlayer play;

  1. 检查Pip是否支持当前设备

-(空)setupSuport{ if(AVPictureInPictureController isPictureInPictureSupported) {

_AVPictureInPictureController = [AVPictureInPictureController alloc initWithPlayerLayer:_layer];_AVPictureInPictureController.delegate = self;} else { //此处不支持PIP开始按钮}

}

PiP的

  1. 操作

-(IBAction)actionPIPStart:(UIButton*)发送者{

代码语言:javascript
运行
复制
if (_AVPictureInPictureController.pictureInPictureActive) {
    [_AVPictureInPictureController stopPictureInPicture];
    NSLog(@"no PIP!");
}
else {
    [_AVPictureInPictureController startPictureInPicture];
    NSLog(@"PIP!");
}

}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51629755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档