我正在从视频库中获取视频或录制新视频。一旦在imagepicker方法中选择了didfinishpickingmediawithinfo:我需要找到从我的视频专辑中选择的视频的持续时间以及从相机记录的on i。 我已经使用AVAsset来获取CMTime中的持续时间 我也提到MPMoviePlayer来获取视频的持续时间,但他们没有提供我这样的属性。
任何帮助将不胜感激
问候
答案 0 :(得分:1)
NSURL *recordedTmpFile = [info objectForKey:UIImagePickerControllerMediaURL];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:recordedTmpFile];
CMTime duration = playerItem.duration;
float seconds = CMTimeGetSeconds(duration);
答案 1 :(得分:1)
1)只需在您的应用中添加AVFoundation框架
2)然后将头文件导入控制器
#import <AVFoundation/AVFoundation.h>
3)然后添加由victor编写的上述代码。
NSURL *recordedTmpFile = [info objectForKey:UIImagePickerControllerMediaURL];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:recordedTmpFile];
CMTime duration = playerItem.duration;
float seconds = CMTimeGetSeconds(duration);
答案 2 :(得分:0)
MPMoviePlayerController具有属性持续时间。
@property (nonatomic, readonly) NSTimeInterval duration
请注意,此媒体资源为只读。
根据文件
如果电影的持续时间未知,则此属性中的值为0.0。如果随后确定了持续时间,则会更新此属性并发布MPMovieDurationAvailableNotification通知。
但为什么你更喜欢MPMoviewPlayerController?对于这种类型的操作,AVFoundation要快得多。而且您不需要等待MPMoviewPlayerController中的任何通知。
如果您想通过AVAsset。这是一个确切的答案:MPMoviePlayerController - Duration always 0
答案 3 :(得分: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);
}