iPhone4の、iOSの4.3.3、iOSのSDK4.3MPMoviePlayerController - 持続時間は常に0
こんにちはすべて、
私はビデオのアップロード機能を作成しています。ビデオはUIImagePickerControllerを使用して取得され、カメラを使用してキャプチャするか、フォトライブラリから取得することができます。私は最大60秒間のアプリケーション制約があります。 60秒
[ピッカーsetVideoMaximumDuration:60]に
//リミット動画:カメラを使用してビデオを録画するときこれは簡単に介して達成されます。
ビデオは、フォトライブラリから選択されたときに、次のようにしかし、私は時間を得るための参照唯一の方法はMPMoviePlayerControllerのdurationプロパティを経由する:
//のMediaTypeがkUTTypeImageまたはkUTTypeMovieことができます。
NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType]; NSLog(@ "%@"、mediaType);期間は常に0です。しかし
//その場合、ムービー
if ([mediaType isEqualToString:(NSString*)kUTTypeMovie]) {
// get the URL
NSURL* mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"%@",mediaURL);
// can use MPMoviePlayerController class to get duration
int duration = -1;
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: mediaURL];
if (moviePlayer != nil) {
duration = moviePlayer.duration;
NSString *path = moviePlayer.contentURL;
[moviePlayer release];
}
私はフォトライブラリにそれを選択する際に時間が字幕の一部として表示されるので、ビデオは時間を持って知っています。期間はいつも利用できるとは限りませんが、この場合は期間が写真に表示されます。私はcontentURLプロパティもチェックし、それは良い値を持っています。私は、ファイルのNSURLが良いことを知っているので、ファイルサイズなどを取得することができます...
ありがとう!
あなたはMPMovieDurationAvailableNotificationのために聞くことができます:ここでAVFoundationを使って時間を取得するためのコードスニペットです。そうすれば、durationを決定するのに十分長い間、moviePlayerを周りに置いておく必要があります。フォトライブラリは、キャッシュされた値を使用する可能性があります。 – omz
@imobilizer下記の回答が役に立った場合は、マークを付けてください。 – memmons