关于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)
- AVPlayer 与 AVPlayerViewController 媒体播放器
- AVPlayerLayer与AVPlayer媒体播放器
- AVPlayer无法在iOS 11中播放
- AVPlayer无法在iOS 14.2 Beta中播放
ios – 如何让AVPlayer检索由SSL保护的播放列表?(avplayer oplayer)
在我们将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:上述方法不适用于证书.
任何提示,为什么它不能在设备上工作,或者一个替代解决方案是受欢迎的!
解决方法
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 媒体播放器
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:只是播放视频,没有暂停、快进等其他按钮生成
#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中播放
我收到以下警告:
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中播放?
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中播放的相关信息,请在本站寻找。
本文标签: