GVKun编程网logo

ios – 如何让AVPlayer检索由SSL保护的播放列表?(avplayer oplayer)

1

关于ios–如何让AVPlayer检索由SSL保护的播放列表?和avplayeroplayer的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AVPlayer与AVPlayerViewCo

关于ios – 如何让AVPlayer检索由SSL保护的播放列表?avplayer oplayer的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AVPlayer 与 AVPlayerViewController 媒体播放器、AVPlayerLayer与AVPlayer媒体播放器、AVPlayer无法在iOS 11中播放、AVPlayer无法在iOS 14.2 Beta中播放等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

ios – 如何让AVPlayer检索由SSL保护的播放列表?(avplayer oplayer)

ios – 如何让AVPlayer检索由SSL保护的播放列表?(avplayer oplayer)

我们正在开发一个HTTP流媒体iOS应用程序,要求我们从安全站点接收播放列表.此站点要求我们使用自签名SSL证书进行身份验证.

在我们将NSURLConnection与委托一起使用以响应授权质询之前,我们从.p12文件中读取凭据.

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    [[challenge sender] useCredential:  self.credentials forAuthenticationChallenge:challenge];
}

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    return YES;
}

通过初始连接到我们获取.m3u8播放列表的URL,我们可以使用AVPlayer播放播放列表.问题是这种方法只适用于模拟器.

注意:我们可以使用设备上的NSURLConnection下载播放列表.这必然意味着AVPlayer不能继续使用在此初始连接期间建立的信任.

我们还尝试将凭据添加到[NSURLCredentialStorage sharedCredentialStorage],但没有任何运气.

下面是我们的霰弹枪方法:

NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
                                         initWithHost:host
                                         port:443
                                         protocol:@"https"
                                         realm:nil
                                         authenticationMethod:NSURLAuthenticationMethodClientCertificate];



[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:creds
                                                    forProtectionSpace:protectionSpace];

    NSURLProtectionSpace *protectionSpace2 = [[NSURLProtectionSpace alloc]
                                         initWithHost:host
                                         port:443
                                         protocol:@"https"
                                         realm:nil
                                         authenticationMethod:NSURLAuthenticationMethodServerTrust];



[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:creds
                                                    forProtectionSpace:protectionSpace2];

编辑:根据this question:上述方法不适用于证书.

任何提示,为什么它不能在设备上工作,或者一个替代解决方案是受欢迎的!

解决方法

从iOS 6开始,AVAssetResourceLoader可用于检索HTTPS安全播放列表或密钥文件.

An AVAssetResourceLoader object mediates resource requests from an AVURLAsset object with a delegate object that you provide. When a request arrives,the resource loader asks your delegate if it is able to handle the request and reports the results back to the asset.

请在下面找到示例代码.

// AVURLAsset + Loader
AVURLAsset      *asset          = [[AVURLAsset alloc] initWithURL:url options:nil];
AVPlayerItem    *playerItem     = [AVPlayerItem playerItemWithAsset:asset];
AVAssetResourceLoader *loader   = asset.resourceLoader;
[loader setDelegate:self queue:dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAULT,0)];

// AVPlayer
AVPlayer        *avPlayer       = [AVPlayer playerWithPlayerItem:playerItem];

您将需要处理resourceLoader:shouldWaitForLoadingOfRequestedResource:delegate方法,该方法将在需要身份验证时调用,您可以使用NSURLConnection来请求安全资源.

(BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader    shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
{

 //Handle NSURLConnection to the SSL secured resource here
  return YES;
}

希望这可以帮助!

P.S:使用CocoaHTTPServer的代理方法运行良好,但使用AVAssetResourceLoader是一种更优雅的解决方案.

AVPlayer 与 AVPlayerViewController 媒体播放器

AVPlayer 与 AVPlayerViewController 媒体播放器

1. 简介・AVPlayer 是一个可以播放任何格式的全能影音播放器,使用 AVPlayer 需要导入 AVFoundation.h。・支持视频格式:WMV,AVI,MKV,RMVB,RM,XVID,MP4,3GP, MPG 等。・支持音频格式:MP3,WMA,RM,ACC,OGG,APE,FLAC,FLV 等。・在开发中,单纯使用 AVPlayer 类是无法显示视频的,要将视频层添加至 AVPlayerLayer 中,这样才能将视频显示出来。・AVPlayer 并未提供视频操作组件,需用户自定义。 2.AVPlayerLayer

・bounds: 设置播放矩形区域;・position: 设置播放区域中心点位置;

・videoGravity: 设置拉伸模式・player: 设置播放媒体

・status: 获取播放媒体状态

・rate: 设置播放速度

3.AVPlayerViewController

AVPlayerViewController 提供了默认的可视化控制界面,要使用 AVPlayerViewController 需导入 AVKit.h。

AVPlayerViewController 整合了一个完整的播放器,可以作为控制器进行操作显 示。

AVPlayerViewController 可以支持播放本地及网络视频文件,支持以下格 式:.mov、.mp4、.mpv、.3gp。

常用的属性:

・player: 设置播放器・showsPlaybackControls: 设置是否显示媒体播放组件,默认 YES・videoGravity: 设置视频拉伸模式

・allowsPictureInPicturePlayback: 设置是否允许画中画回放,默认 YES

・delegate: 设置代理

4.AVPlayerLayer视频播放实现:

//1.引入AVFoundation和AVKit框架

#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>
//2.定义参数
{
    //播放器
    AVPlayer *_player;
    //显示画面的Layer
    AVPlayerLayer *imageLayer;
    UIProgressView*progress;
}
    //3.Avplayer实现
    //添加视频文件路径
    NSString *path=[[NSBundle mainBundle]pathForResource:@"Paradise-art--Hello.mp4" ofType:nil];
    NSURL*url=[NSURL fileURLWithPath:path];
    //创建播放对象
    _player=[[AVPlayer alloc]initWithURL:url];
    //将显示画面的Layer和播放对象链接
    imageLayer=[AVPlayerLayer playerLayerWithPlayer:_player];
    //设置播放视图的大小
    imageLayer.frame=CGRectMake(0, 0, WIDTH, HEIGHT);
    //将显示画面的Layer添加到self.view.laye上
    [self.view.layer addSublayer:imageLayer];
    //设置播放速度
    _player.rate=1.5;
    //播放
    [_player play];
    //暂停
    [_player pause];
 //4.添加视频播放的进度条
-(void)addProgressView{
    progress=[[UIProgressView alloc]initWithFrame:CGRectMake(10,HEIGHT-20, WIDTH-20, 10)];
    [self.view addSubview:progress];
    __weak UIProgressView *p = progress;
    [_player addPeriodicTimeObserverForInterval:CMTimeMake(1,10 ) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
        //更新进度
        //总时间
        float total =  _player.currentItem.duration.value / _player.currentItem.duration.timescale;
        //当前时间
        float current = time.value * 1.0f/time.timescale;
        
        p.progress = current/total;
    }];
}

 5. AVPlayerViewController实现视频播放
 //1.创建AVPlayerViewController为类属性

@property(nonatomic ,strong)AVPlayerViewController*avPlayViewController;
//2.2 AVPlayerViewController播放实现
-(void)playMV{
    //创建视频的播放路径
    //播放本地文件
    NSString*PlayPath=[[NSBundle mainBundle]pathForResource:@"我是艺术.mp4" ofType:nil];
    NSURL*url=[NSURL fileURLWithPath:PlayPath];
    //播放网络文件
    NSString*NetPath=@"http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4";
    NSURL*urlNet=[NSURL URLWithString:NetPath];
    //创建一个播放器
    AVPlayer *player=[AVPlayer playerWithURL:urlNet];
    //实例化播放视频控制器
    _avPlayViewController=[[AVPlayerViewController alloc]init];
    _avPlayViewController.player=player;
    //模态跳转
    [self presentViewController:_avPlayViewController animated:YES completion:nil];
    //[player play];
}

AVPlayerLayer与AVPlayer媒体播放器

AVPlayerLayer与AVPlayer媒体播放器

AVPlayerLayer:只是播放视频,没有暂停、快进等其他按钮生成

#import <AVFoundation/AVFoundation.h>

#import <AVKit/AVKit.h>

-(void)playII{

1、//文件路径

NSString* path=[[NSBundle mainBundle]pathForResource:@"胡彦斌-还魂门.mp4" ofType:nil];

2、// 转换成url

NSURL* url=[NSURL fileURLWithPath:path];

3、//AVPlayer可以播放任何格式视频的播放器 需要引进AVFoundation框架

AVPlayer* player=[AVPlayer playerWithURL:url];

AVPlayerLayer* playerLayer=[AVPlayerLayer playerLayerWithPlayer:player];

playerLayer.frame=CGRectMake(0, 0, WIDTH, HEIGHT);//WIDTH、HEIGTH全局的宏定义

//加载到layer图层上

[self.view.layer addSublayer:playerLayer];

[player play];//播放

[player pause];//暂停

}

AVPlayer:同时生成播放视频的暂停、快进等其他按钮生成

//需要引进#import <AVKit/AVKit.h>框架 

-(void)playMedio:(UIButton*)sender

{

NSString* path=[[NSBundle mainBundle]pathForResource:@"张韶涵-第一页.mp4" ofType:nil];//文件路径

NSURL* url=[NSURL fileURLWithPath:path]; //路径

AVPlayer* player=[AVPlayer playerWithURL:url]; //创建一个播放器 需要导入AVKit

player.rate=2.0; //float 类型 (0.5-2.0之间) 1.0表示正常播放,它也是默认值。2.0表示以最快的速度进行播放,0.5表示以最慢的速度进行播放

_AVplayer=[[AVPlayerViewController alloc]init];//实例化播放视图控制器

_AVplayer.player=player;//设置播放器

[_AVplayer setShowsPlaybackControls:YES];//设置是否显示媒体播放组建 默认YES

[_AVplayer setAllowsPictureInPicturePlayback:YES];//设置是否允许画中画回放 默认YES

//模态跳转

[self presentViewController:_AVplayer animated:YES completion:nil];

[player play];

 

}

 

AVPlayer无法在iOS 11中播放

AVPlayer无法在iOS 11中播放

我在iOS 11中遇到了AVPlayer的问题.相同的代码在iOS 10上完美运行.我使用DRM播放视频.

我收到以下警告:

2017-11-22 20:48:09.237095+0530 AppName[9113:3782887] [] <<<< 
  AVOutputDevicediscoverySession (figRoutediscoverer) >>>> -
  [AVfigRoutediscovererOutputDevicediscoverySessionImpl 
  outputDevicediscoverySessionDidChangediscoveryMode:]: Setting device 
  discovery mode to discoveryMode_None (client: AppName)
  2017-11-22 20:48:09.266561+0530 AppName[9113:3782887] Presenting view 
  controllers on detached view controllers is discouraged 
  <Nettkino.PlayerViewController: 0x103f0a4b0>.
  2017-11-22 20:48:09.272713+0530 AppName[9113:3782887] [framework] 
  CUICatalog: Invalid asset name supplied: '(null)'
  2017-11-22 20:48:09.272730+0530 AppName[9113:3782887] [framework] 
  CUICatalog: Invalid asset name supplied: '(null)'
  2017-11-22 20:48:09.285772+0530 AppName[9113:3782887] [] <<<< 
  AVOutputDevicediscoverySession (figRoutediscoverer) >>>> -
  [AVfigRoutediscovererOutputDevicediscoverySessionImpl 
  outputDevicediscoverySessionDidChangediscoveryMode:]: Setting device 
  discovery mode to discoveryMode_Presence (client: AppName)

请指导我.我在过去3天内无法解决此问题.如果您需要有关我使用的应用程序的更多信息,请告诉我,我会更新我的问题.

解决方法

没有代码,我们可以得到确切的错误描述.请发布播放器创建和您用来播放文件的步骤.然后我们只会执行并回复您.

AVPlayer无法在iOS 14.2 Beta中播放

AVPlayer无法在iOS 14.2 Beta中播放

如何解决AVPlayer无法在iOS 14.2 Beta中播放?

Apple已从iOS 14.0对iOS 14.2 beta进行了重大的AVFoundation更改(现在正在更改Control Center UI等)。

问题是,一个在iOS 14.0中完美运行的简单音频AVPlayer应用程序不再在iOS 14.2 Beta 2中运行。

在iOS 14.2 Beta 2中,系统会向用户显示“无法完成操作”错误,并且无法开始播放。

有人找到解决此问题的方法了吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于ios – 如何让AVPlayer检索由SSL保护的播放列表?avplayer oplayer的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于AVPlayer 与 AVPlayerViewController 媒体播放器、AVPlayerLayer与AVPlayer媒体播放器、AVPlayer无法在iOS 11中播放、AVPlayer无法在iOS 14.2 Beta中播放的相关信息,请在本站寻找。

本文标签: