NSURL *url =[[NSURL alloc]initWithString:@"http://www.youtube.com/watch?v=Jeh40KFFS5Y"];
MPMoviePlayerController *player1 = [[MPMoviePlayerController alloc] initWithContentURL:url];
[player1 setContentURL:url];
[player1 setMovieSourceType:MPMovieSourceTypeFile];
[[player1 view] setFrame:self.view.bounds];
player1.scalingMode = MPMovieScalingModeNone;
player1.repeatMode = MPMovieRepeatModeNone;
[self.view addSubview: [player1 view]];
[player1 play];
在MPMoviePlayer中播放网址时出现以下错误:
HTTP(http://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时例外。
2018-06-06 11:15:31.891375 + 0530 vedio [1866:137968]任务。< 1>完成错误 - 代码:-1022 2018-06-06 11:15:31.891439 + 0530 vedio [1866:138011]任务。< 1>完成错误 - 代码:-1022 2018-06-06 11:15:32.269777 + 0530 vedio [1866:137470] [回放]用于解决错误错误Domain = AVFoundationErrorDomain Code = -11800“操作无法完成”UserInfo = {NSLocalizedFailureReason =发生未知错误(-1022),NSLocalizedDescription =操作无法完成,NSUnderlyingError = 0x600000449e70 {错误域= NSOSStatusErrorDomain代码= -1022“(null)”}} 2018-06-06 11:15:32.271275 + 0530 vedio [1866:137470] [回放]❗️Resolutionfor item无法解决错误:错误Domain = AVFoundationErrorDomain Code = -11800“操作无法完成”UserInfo = {NSLocalizedFailureReason =发生未知错误(-1022),NSLocalizedDescription =操作无法完成,NSUnderlyingError = 0x600000449e70 {错误域= NSOSStatusErrorDomain代码= -1022“(null)”}},分辨率错误:(null) 2018-06-06 11:15:32.271423 + 0530 vedio [1866:137470] [回放]❗️Playback失败并显示错误:错误Domain = AVFoundationErrorDomain Code = -11800“操作无法完成”UserInfo = {NSLocalizedFailureReason =未知发生错误(-1022),NSLocalizedDescription =操作无法完成,NSUnderlyingError = 0x600000449e70 {错误域= NSOSStatusErrorDomain代码= -1022“(null)”}},未解析(canResolve:NO,allowsItemErrorResolution:NO) 2018-06-06 11:15:32.301954 + 0530 vedio [1866:137470] [回放]❗️无法排队任何物品。
答案 0 :(得分:0)
您需要在info.plist中添加以下内容,因为您使用的是不安全的连接(http://)。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>youtube.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
或者您可以使用惰性方法。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
然后尝试玩viedo。
如果问题仍然存在,请尝试使用https://
代替http://
播放视频。
使用AVPlayer
NSURL *videoURL = [NSURL URLWithString:@"https://www.youtube.com/watch?v=Jeh40KFFS5Y"];
AVAsset *avAsset = [AVAsset assetWithURL:videoURL];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:avAsset];
AVPlayer * avPlayer = [AVPlayer playerWithPlayerItem:item];
AVPlayerLayer *playerLayer = [[AVPlayerLayer alloc] initWithLayer:avPlayer];
playerLayer.frame = self.view.frame;
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:playerLayer];
答案 1 :(得分:0)
您未启用应用传输安全协议。所以这个代码就足够了。打开包含源代码的info.plist文件并粘贴我的代码。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
答案 2 :(得分:0)
您的视频无法在您需要的MPMoviePlayerController中播放
一种解决方案正在使用
get set
使用pod你需要提供youtubeplayerview和东西,但有些所有者禁用在另一个应用程序中播放
因此,您需要解决方案,例如youtube是否在youtube中播放,否则在浏览器中打开
pod 'YouTubePlayer'
答案 3 :(得分:0)
我用Y来播放Youtube的视频 pod“youtube-ios-player-helper”,“〜&gt; 0.1.4” 效果很好。
安装此窗格后,
拖动UIView并将自定义类更改为“YTPlayerView”
@property(弱,非原子)IBOutlet YTPlayerView * PlayerView; //创建出口
在viewDidload中,您可以编写用于播放视频的单行代码