3

を使用してムービープレーヤーを作成できinitWithContentURL:、NSUrl引数を渡すことができることを知っています。ここではNSUrlはなく、NSDataしかありません。それを使って映画プレーヤーを作ることはできますか?

4

1 に答える 1

11

Movieplayer をデータで初期化する方法はありません。

私の提案:データをビデオ ファイルとしてドキュメント ディレクトリに書き込み、その URL を使用してプレーヤーを初期化する必要があります。

オブジェクティブ C

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.m4v"];
[data writeToFile:appFile atomically:YES];

動画ファイルdataはこちら。NSData

変数を使用してappFile、ムービー プレーヤーを初期化できるようになりました。

NSURL *movieUrl = [NSURL fileURLWithPath:appFile];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController] alloc] initWithContentURL:movieUrl];

迅速

保存ファイル:

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
if let docDir = paths.first
{
    let appFile  = docDir.appending("/MyFile.m4v")
    let movieUrl = URL(fileURLWithPath: appFile)

    do
    {
        try data.write(to: movieUrl, options: .atomic)
    }
    catch let error as NSError
    {
        print(error.localizedDescription)
    }
}

ムービー プレーヤーの初期化:

let moviePlayer = MPMoviePlayerController(contentURL: movieUrl)

注: MPMoviePlayerControlleriOS 9で非推奨になったため、 AVPlayerViewControllerを使用する必要がある場合があります。

于 2012-11-14T12:25:25.167 に答える