how to get the time duration of recorded video in iphone app

蓝咒 提交于 2019-12-23 21:01:49

问题


I am recording video in iPhone I want to get the recorded duration time of video. Is there any way to get the recorded video duration time.

Here is the code where I get the recorded video along with path.

if ([type isEqualToString:(NSString *)kUTTypeVideo] || [type isEqualToString:(NSString *)kUTTypeMovie])
{
    NSURL*videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

    videoData = [[NSData dataWithContentsOfURL:videoURL] retain];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"dd-MM-yyyy_HH:mm:SS"];

    NSDate *now = [[[NSDate alloc] init] autorelease];
    NSDate* theDate = [dateFormat stringFromDate:now];

    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];

    NSString*testUser=TitleTextField.text;

    NSString *videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mov",documentsDirectory,testUser]] autorelease];

    BOOL success = [videoData writeToFile:videopath atomically:NO];

    // Alert for showing the record video

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"You have recorded a video"
                                                   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];

    recordedVideoLabel.text=@"You have recorded Video";
}

回答1:


It can be done easily using AVAssets

AVURLAsset *avUrl = [AVURLAsset assetWithURL:@"Here comes the url of the video"];
CMTime time = [avUrl duration];
int seconds = ceil(time.value/time.timescale);

You need to link CoreMedia and AVFoundation framework in your project




回答2:


This worked for me to get the time in seconds, you can add this method to your code:

-(float) getDurationInSecondsForVideoPath:(NSString*)videoPath {
   NSURL * videoURL = [NSURL URLWithString: videoPath];
   AVURLAsset * avAsset = [AVURLAsset videoURL];
   CMTime avDuration = [avAsset duration];
   float avDurationInSeconds = CMTimeGetSeconds(avDuration);
   return avDurationInSeconds;
}

Note: Make sure that the videoPath works before use the method, otherwise the method will return 0.0000 or nan

For more information:AVAsynchronousKeyValueLoading, AVURLAsset and AVAsset.



来源:https://stackoverflow.com/questions/17183938/how-to-get-the-time-duration-of-recorded-video-in-iphone-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!