IOS AVPlayer 无法播放视频
Posted
技术标签:
【中文标题】IOS AVPlayer 无法播放视频【英文标题】:IOS AVPlayer won't play video 【发布时间】:2013-05-12 15:50:19 【问题描述】:我正在尝试播放视频,所以我从教程中获得了一些代码,但它不起作用。
这是我使用的代码:
- (void) viewDidAppear:(BOOL)animated
avAsset = [AVAsset assetWithURL:[NSURL URLWithString:filePath]];
avPlayerItem =[avPlayerItem initWithAsset:avAsset];
avPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];
avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
[avPlayerLayer setFrame:self.view.frame];
[self.view.layer addSublayer:avPlayerLayer];
[avPlayer seekToTime:kCMTimeZero];
[avPlayer play];
我不知道出了什么问题,它没有给出任何错误,它只是给出了黑屏。 谢谢。
【问题讨论】:
【参考方案1】:感谢 s1mon 和 matt 的帮助。
这是可能对某人有所帮助的新代码:
- (void) viewDidAppear:(BOOL)animated
avAsset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filePath]];
avPlayerItem =[[AVPlayerItem alloc]initWithAsset:avAsset];
avPlayer = [[AVPlayer alloc]initWithPlayerItem:avPlayerItem];
avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:avPlayer];
[avPlayerLayer setFrame:self.view.frame];
[self.view.layer addSublayer:avPlayerLayer];
//[avPlayerLayer setBackgroundColor:[[UIColor redColor]CGColor]];
[avPlayer seekToTime:kCMTimeZero];
[avPlayer play];
谢谢。
【讨论】:
我试图在我的应用程序中实现相同的代码,我正在使用 Tableview 显示来自服务器的所有视频,我有视频的 url,当我在单元格上传递它时,它不会播放它,请帮助... 有趣的是,我如何将背景颜色设置为红色,就像您在注释掉的代码中所做的那样,以确保图层在屏幕上可见。【参考方案2】:这可能不是真正的问题,但这段代码肯定是错误的:
[NSURL URLWithString:filePath]
首先,尽量不要以文件路径开头;以文件 URL 开头。这样,就不需要转换了。但如果您必须执行从文件路径到 URL 的转换,请使用 fileURLWithPath:isDirectory:
。文件 URL 是一种特殊的动物,当您从路径转换时,您必须专门要求提供一个。
【讨论】:
显然这是问题所在:DThanksssssssss:D 这太荒谬了。URLWithString
和 fileURLWithPath:
都创建了一个有效的 NSURL
实例。为什么前者不适用于 AVPlayer
对我来说毫无意义。【参考方案3】:
我想你忘了在这一行创建AVPlayerItem
的实例:
avPlayerItem =[avPlayerItem initWithAsset:avAsset];
这只是将initWithAsset:
发送到avPlayerItem
(调用此方法时可能为零)。尝试更改它以实例化一个新的AVPlayerItem
,然后您可以将其分配给avPlayerItem
,如下所示:
avPlayerItem = [[AVPlayerItem alloc] initWithAsset:avAsset];
【讨论】:
这也是个问题 :D 谢谢 :D【参考方案4】:对于那些寻找swift 2.0 version
的人来说,这对我有用。干杯。
import Foundation
import UIKit
import AVKit
class VideoViewController: AVPlayerViewController
override func viewDidAppear(animated: Bool)
self.setupVideoPlayerView()
private func setupVideoPlayerView()
let path = "HTTP_VIDEO_URL_HERE"
let nsURL = NSURL(string: path)
let avAsset = AVAsset(URL: nsURL!)
let avPlayerItem = AVPlayerItem(asset: avAsset)
let avPlayer = AVPlayer(playerItem: avPlayerItem)
let avPlayerLayer = AVPlayerLayer(layer: avPlayer)
avPlayerLayer.frame = self.view.frame
self.view.layer.addSublayer(avPlayerLayer)
self.player = avPlayer
self.player!.seekToTime(kCMTimeZero)
self.player!.play()
【讨论】:
以上是关于IOS AVPlayer 无法播放视频的主要内容,如果未能解决你的问题,请参考以下文章
AVPlayer 无法在 iOS8 上播放 NSDocuments 目录中的视频