6

を使用してビデオを再生しようとしていますので、チュートリアルからコードを取得しましたが、機能しません。

私が使用するコードは次のとおりです。

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

}

何が問題なのかわかりません。エラーは発生しません。黒い画面が表示されるだけです。ありがとう。

4

4 に答える 4

36

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

}

ありがとうございました。

于 2013-05-12T17:40:15.307 に答える
12

これは実際の問題ではないかもしれませんが、このコードは明らかに間違っています:

[NSURL URLWithString:filePath]

まず第一に、ファイル パスから始めないようにしてください。ファイルの URL から始めます。そうすれば、変換は必要ありません。ただし、ファイル パスから URL への変換を実行する必要がある場合は、 fileURLWithPath:isDirectory:. ファイル URL は特別な種類の動物であり、パスから変換する場合は特に指定する必要があります。

于 2013-05-12T16:26:12.270 に答える
2

を探している人のために、これ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()

    }

}
于 2016-08-23T13:30:45.407 に答える