使用 AVPlayer 从远程 URL 播放视频
Posted
技术标签:
【中文标题】使用 AVPlayer 从远程 URL 播放视频【英文标题】:playing video from remote URL with AVPlayer 【发布时间】:2016-07-11 04:52:43 【问题描述】:我正在尝试。这是一个非常简单的设置:加载视图控制器,并在 viewDidLoad 中,使用 url 设置 AVPlayer 并播放它。这是我的代码,在 viewDidLoad 中:
NSString *urlString = @"http://download.wavetlan.com/SVV/Media/HTTP/MOV/ConvertedFiles/MediaConvert/MediaConvert_test4_1m10s_MPEG4SP_VBR_383kbps_320x240_30fps_AACLC_VBR_60kbps_Stereo_44100Hz.mov";
NSURL *url = [NSURL fileURLWithPath:urlString];
self.item = [AVPlayerItem playerItemWithURL:url];
self.player = [[AVPlayer alloc] initWithPlayerItem:self.item];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.item];
playerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
playerLayer.backgroundColor = [UIColor greenColor].CGColor;
[self.view.layer addSublayer:playerLayer];
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.player play];
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
但是当视图加载时,什么都没有发生。屏幕只是绿色的(因为我将 playerLayer 设置为绿色),所以我知道它就在那里。它只是没有播放。您也可以测试该 urlString,它是一个有效的 url。文件大小为 3.8 MB。我从这里的一些测试 URL 中得到了 URL:http://download.wavetlan.com/SVV/Media/HTTP/http-mov.htm
所以,我已经初始化了播放器,playerLayer,item,并且URL是正确的。但是屏幕上什么也没有出现。我在调试器中注意到的一件事是 NSURL 和 url 的实际字符串最后是不同的。所以也许这可能会有所帮助,但我不知道如何改变它。这是一张照片:
另外,我正在 ios 8.4 设备上对此进行测试,所以我知道阻止 HTTP 地址的不是应用程序传输安全性。
我在这里做错了什么?任何帮助表示赞赏。谢谢。
【问题讨论】:
【参考方案1】:更改此:NSURL *url = [NSURL fileURLWithPath:urlString];
更改为:NSURL *url = [NSURL URLWithString:urlString];
fileURLWithPath
用于从本地文件系统加载 url。对于来自网络的 URL,您应该使用 URLWithString
【讨论】:
你能帮我这个类型的网址吗?请查看xyz:8080/Restful/api/fileupload/attachments/918882651339/…以上是关于使用 AVPlayer 从远程 URL 播放视频的主要内容,如果未能解决你的问题,请参考以下文章
使用swift 3点击单元格时如何在Avplayer中播放来自url的视频