2012-08-06 50 views
1

我正在從視頻庫中獲取視頻或錄製新視頻。一旦在imagepicker方法中選擇了didfinishpickingmediawithinfo:我需要查找從中選擇的視頻持續時間我的視頻專輯也是我從相機錄製的。 我已經使用AVAsset獲取CMTime的持續時間 我也提到MPMoviePlayer獲取視頻的持續時間,但他們不提供這樣的屬性。獲取通過iPhone攝像頭選擇或錄製的視頻長度xcode

任何幫助,將不勝感激

問候

回答

0

的MPMoviePlayerController有一個屬性的持續時間。

@property (nonatomic, readonly) NSTimeInterval duration 

請注意,這家酒店是只讀

作爲每文檔

如果電影的持續時間是未知的,在該屬性中的值是0.0。如果隨後確定持續時間,則更新此屬性併發布MPMovieDurationAvailableNotification通知。

但爲什麼你更喜歡MPMoviewPlayerController?這種類型的操作AVFoundation要快得多。而且您不需要等待MPMoviewPlayerController中的任何通知。

如果你想通過AVAsset。這裏是一個確切的答案:MPMoviePlayerController - Duration always 0

1
NSURL *recordedTmpFile = [info objectForKey:UIImagePickerControllerMediaURL]; 

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:recordedTmpFile]; 

CMTime duration = playerItem.duration; 
float seconds = CMTimeGetSeconds(duration); 
1

1)只需添加AVFoundation framwork在您的應用程序

2)然後導入頭文件到您的控制器

#import <AVFoundation/AVFoundation.h> 

3)然後加入以上代碼由勝利者撰寫。

NSURL *recordedTmpFile = [info objectForKey:UIImagePickerControllerMediaURL]; 

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:recordedTmpFile]; 

CMTime duration = playerItem.duration; 
float seconds = CMTimeGetSeconds(duration); 
0

其他的答案使用AVPlayerItem這個問題並沒有爲我工作,但這並使用AVURLAsset:

#import <AVFoundation/AVFoundation.h> 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    NSURL *videoURL=[info objectForKey:@"UIImagePickerControllerMediaURL"]; 
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil]; 

    NSTimeInterval durationInSeconds = 0.0; 
    if (asset) 
     durationInSeconds = CMTimeGetSeconds(asset.duration); 
}