2017-01-18 12 views
0

私のアプリでは、ビデオからフレームを取り出してフィルタリングしたいと思っています。私はフレームのfrimビデオを時間オフセットで取ろうとします。これは私のコードです:時間間隔が非整数(1.5など)であっても... 1、2、3:iOSのビデオからフレームを取得する方法

- (UIImage*)getVideoFrameForTime:(NSDate*)time { 

    CGImageRef thumbnailImageRef = NULL; 

    NSError *igError = nil; 

    NSTimeInterval timeinterval = [time timeIntervalSinceDate:self.videoFilterStart]; 

    CMTime atTime = CMTimeMakeWithSeconds(timeinterval, 1000); 
    thumbnailImageRef = 
    [self.assetImageGenerator copyCGImageAtTime:atTime 
            actualTime:NULL 
              error:&igError]; 

    if (!thumbnailImageRef) { 
     NSLog(@"thumbnailImageGenerationError %@", igError); 
    } 

    UIImage *image = thumbnailImageRef ? [[UIImage alloc] initWithCGImage:thumbnailImageRef] : nil; 

    return image; 
} 

は残念ながら、私は整数秒に位置するフレームのみを参照してください。

整数以外の間隔でフレームを取得するにはどうすればよいですか?

+0

[Swiftを使用してビデオからフレームを取り込む]可能な複製(http://stackoverflow.com/questions/32286320/grab-frames-from-video-using-swift) – shallowThought

答えて

0

のthnx私はGrab frames from video using Swift

あなたはちょうどこの2行を追加する必要があり、この問題の答えを見つけ@shallowThoughtする

assetImgGenerate.requestedTimeToleranceAfter = kCMTimeZero; 
assetImgGenerate.requestedTimeToleranceBefore = kCMTimeZero; 
0

正確に覚えていれば、NSDateの精度は、フレームが整数秒しかかからない理由を説明する2番目の値までしか上がらない。非整数の秒数でフレームを取得するには、別の種類の入力を使用する必要があります。より多くのフレームの詳細はgithubの上で対応するプロジェクトを 取得する

+0

Unfortunatel y、no。私はtimeintervalを記録しており、それは浮動です。また、この 'CMTime atTime = CMTimeMakeWithSeconds(3、1000);のようにCMTimeを作成し、3を3.5に変更すると、結果は同じになります。 –

+0

'CMTimeMakeWithSeconds(3、1)'と 'CMTimeMakeWithSeconds(3.5、1)'を実行するとどうなりますか – TheAmateurProgrammer

+0

2つの等しいフレーム –

1

使用このプロジェクト:iFrameExtractor.git

+0

thnxがたくさん表示されます。 –

+0

解決策を確認しましたか? –

+0

いいえ、私は@shallowからの解答を使用しましたコメント –

関連する問題