【问题标题】:IOS AVPlayer won't play videoIOS AVPlayer 无法播放视频
【发布时间】: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];

}

我不知道出了什么问题,它没有给出任何错误,它只是给出了黑屏。 谢谢。

【问题讨论】:

    标签: ios video ios6 avplayer


    【解决方案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
    • 这太荒谬了。 URLWithStringfileURLWithPath: 都创建了一个有效的 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()
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多