IOS AVPlayer不会播放视频

问题描述:

我想播放视频使用所以我从教程中得到了一些代码,但它不会工作。IOS AVPlayer不会播放视频

这是我使用的代码:

- (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]; 

} 

我不知道什么是错了,它并没有给纽约州的错误,它只是提供了黑屏。 谢谢。

嘿感谢家伙s1mon和亚光的帮助

下面是新的代码,可能帮助别人:

- (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]; 

} 

THXXXXXXXX球员:d

+0

感谢分享.. **它完美的作品** – swiftBoy 2015-01-29 07:56:47

+0

我试图在我的应用程序中实现相同的代码,我使用Tableview来显示来自服务器的所有视频,我有视频的网址,当我通过这个细胞,比它不玩它,请帮助... – ravinder521986 2015-08-01 03:36:27

+0

有趣的是,我将背景颜色设置为红色,就像您在注释掉的代码中所做的一样,以确保图层在屏幕上可见。 – ninjaneer 2016-01-31 23:12:55

我想你忘了此行创造的AVPlayerItem一个实例:

avPlayerItem =[avPlayerItem initWithAsset:avAsset]; 

这只是发送initWithAsset:avPlayerItem(这可能是零,当调用此方法)。试着改变它来实例化一个新的AVPlayerItem然后你就可以分配给avPlayerItem,像这样:

avPlayerItem = [[AVPlayerItem alloc] initWithAsset:avAsset]; 
+0

这也是一个问题:d 感谢:d – 2013-05-12 17:38:12

这可能不是实际的问题,但是这个代码肯定是错误的:

[NSURL URLWithString:filePath] 

第一所有,尽量不要以文件路径开始;从文件URL开始。这样,就不需要转换。但是如果您必须执行从文件路径到URL的转换,请使用fileURLWithPath:isDirectory:。文件URL是一种特殊的动物,当你从一条路径转换时,你必须特别要求一个。

+0

显然,这就是问题所在:d Thankssssssssss:d – 2013-05-12 17:36:05

+0

这是荒谬的。 'URLWithString'和'fileURLWithPath:'都创建一个有效的'NSURL'实例。为什么前者不能使用'AVPlayer'对我来说没有意义。 – Legoless 2015-04-27 14:52:45

对于那些寻找一个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() 

    } 

}