0

ムービーを選択するイメージ ピッカーがあります (編集可能)。次に、次を使用してサムネイルを取得します。

UIImage *tempImage = [moviePlayerThumb thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];

これは問題なく動作し、別の方法で問題なく画像を表示できます。また、後でアップロードするためにビデオ データを保存します。

[mediaDict setValue:[NSData dataWithContentsOfFile:mediaPath] forKey:@"data"];

ファイルがアップロードされると、サーバーから問題なく再生されるため、これも機能します。

私が最後に保存するのは URL とパスですが、後でこれらをプレーヤーに入れると、プレーヤーが「読み込み中」(さらにスピニーなもの) と言って行き詰まります。

編集後のピッカーが、(後でファイルを再生するときに) 空になった一時ディレクトリにビデオを保存するためだと思います。

パスは次のようになります。

file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV

このように、ピッカーにビデオを永続的に保存させようとしました。

    NSString *mediaPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];

    NSURL *mediaURL=[info objectForKey:UIImagePickerControllerMediaURL];
    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (mediaPath))
    {
        UISaveVideoAtPathToSavedPhotosAlbum (mediaPath, nil, nil, nil);
    }

フォト アルバムがビデオの編集済みバージョンで徐々にいっぱいになっているため、これが機能していることはわかっています。問題は、UISaveVideo メソッドの後でファイルのパスを見つける方法です。

プレーヤーはこれを記録します。

[MPAVController] Autoplay: Disabling autoplay for pause
[MPAVController] Autoplay: Disabling autoplay
[MPAVController] Autoplay: Disabling autoplay for pause
[MPAVController] Autoplay: Disabling autoplay
[MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
[MPAVController] Autoplay: Enabling autoplay

プレーヤーのコードは次のようになります (mediaPath と mediaURL を使用してみました)。

    // Play the movie
    NSURL *tempMediaPath = [NSURL fileURLWithPath:images[indexPath.item][@"path"]];

    NSURL *tempMediaURL = images[indexPath.item][@"URL"];

    NSLog(@"Media Path, URL : %@, %@", tempMediaPath, tempMediaURL);

    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]initWithContentURL:tempMediaPath];

    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
    [moviePlayer prepareToPlay];
    [moviePlayer play];

そしてNSLog;

Media Path, URL : file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV, file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV

どんな助けでも本当に感謝しています。

4

2 に答える 2

1

管理する一時ファイルの場所にファイルを移動することをお勧めします。

NSString *tempFileName = [[NSUUID UUID] UUIDString];
NSURL *location = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:tempFileName];

[[NSFileManager new] moveItemAtURL:tempMovieURL toURL:location error:nil];
于 2013-07-16T15:51:26.063 に答える