У меня странная проблема со свойством videoMaximumDuration в API видеомагнитофона.Я пытаюсь решить эту проблему больше недели, но не смог.Я написал на нескольких форумах, но пока не помог.
Я использую следующий код для запуска камеры из моего приложения и начала записи видео.Согласно моему требованию, я должен установить продолжительность записи видео до остановки.Итак, я использую свойство «videoMaximumDuration», чтобы установить продолжительность записи видео.
if ([types containsObject:(id)kUTTypeMovie])
{
appDelegate.pickerController = [[UIImagePickerController alloc] init];
appDelegate.pickerController.delegate = self;
appDelegate.pickerController.videoQuality = setVideoQuality;
appDelegate.pickerController.allowsEditing = NO;
appDelegate.pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
appDelegate.pickerController.showsCameraControls = YES;
appDelegate.pickerController.navigationBarHidden = YES;
appDelegate.pickerController.toolbarHidden = YES;
appDelegate.pickerController.wantsFullScreenLayout = YES;
appDelegate.pickerController.cameraViewTransform =
CGAffineTransformScale(appDelegate.pickerController.cameraViewTransform,
CAMERA_TRANSFORM_X,
CAMERA_TRANSFORM_Y);
appDelegate.pickerController.mediaTypes = [NSArray arrayWithObject:(id)kUTTypeMovie];
appDelegate.pickerController.videoMaximumDuration = maxDuration;
[self presentModalViewController:appDelegate.pickerController animated:YES];
}
Вот проблема:
Если, если я установил videoQuality в качестве UIImagePickerControllerQualityTypeHigh, то продолжительность времени(videoMaximumDuration) работает, как и ожидалось, то есть ровно через какое-то время автоматически прекращает запись видео.Если я пойду и посмотрю это записанное видео в Фотоальбоме, чтобы убедиться, что оно записано хорошо, как за время.Если я изменю videoQuality на UIImagePickerControllerQualityTypeMedium (или) UIImagePickerControllerQualityTypeLow, как это, то длительность (videoMaximumDuration) для видеозаписи не работает должным образом, то есть она может автоматически останавливать запись видео в установленное время, без проблемесли я пойду и посмотрю записанное видео в Фотоальбоме, чтобы убедиться, что оно не соответствует затраченному времени, скорее, я могу увидеть видео меньшего размера, чем то, что я записал.Например, если я установил videoMaximumDuration на 30 секунд, после записи видео, если я пойду и увижу это записанное видео в Фотоальбоме, он сможет записать = только до 22 секунд.Кажется, проблема с самим API.Этого не происходит, когда я использую качество видео в качестве UIImagePickerControllerQualityTypeHigh.
Я пытался даже использовать пользовательский вид наложения и запускаю и останавливаю запись видео с помощью кода, как показано ниже, установив таймер (NStimer).Но все же я вижу, что наблюдалась та же проблема.
overlay = [[OverlayView alloc]initWithFrame:CGRectMake(0, 0, 768, 1024)];
if ([types containsObject:(id)kUTTypeMovie])
{
appDelegate.pickerController = [[UIImagePickerController alloc] init];
appDelegate.pickerController.delegate = self;
appDelegate.pickerController.videoQuality = setVideoQuality;
appDelegate.pickerController.allowsEditing = NO;
appDelegate.pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
appDelegate.pickerController.showsCameraControls = NO;
appDelegate.pickerController.navigationBarHidden = YES;
appDelegate.pickerController.toolbarHidden = YES;
appDelegate.pickerController.wantsFullScreenLayout = YES;
appDelegate.mTimerSelectionForVideo = maxDuration; // TIME SET HERE IN VARIABLE
appDelegate.pickerController.cameraViewTransform =
CGAffineTransformScale(appDelegate.pickerController.cameraViewTransform,
CAMERA_TRANSFORM_X,
CAMERA_TRANSFORM_Y);
appDelegate.pickerController.mediaTypes = [NSArray arrayWithObject:(id)kUTTypeMovie];
appDelegate.pickerController.videoMaximumDuration = maxDuration;
[self presentModalViewController:appDelegate.pickerController animated:YES];
appDelegate.pickerController.cameraOverlayView =overlay;
}
OverlayView.m
-(void)startAction:(id)sender
{
BOOL bStop = TRUE;
void (^hideControls)(void);
hideControls = ^(void) {
cameraSelectionButton.alpha = 0;
startButton.enabled = NO;
lbl.hidden = NO;
};
void (^recordMovie)(BOOL finished);
recordMovie = ^(BOOL finished) {
stopButton.enabled = YES;
[appDelegate.pickerController startVideoCapture];
};
// Hide controls
[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:hideControls completion:recordMovie];
if ( appDelegate.mTimerSelectionForVideo==0 )
{
bStop = FALSE;
}
if ( bStop )
timer = [NSTimer scheduledTimerWithTimeInterval:(appDelegate.mTimerSelectionForVideo)+1
target:self selector:@selector(stopCamera:) userInfo:nil repeats:NO];
}
- (void)stopCamera:(NSTimer *)theTimer
{
startButton.enabled = YES;
if ( timer )
{
[timer invalidate];
timer = nil;
}
[appDelegate.pickerController stopVideoCapture];
[appDelegate.pickerController dismissModalViewControllerAnimated:YES];
}
Но все же я вижу ту же самую проблему, которая наблюдалась.Почему другие параметры качества видео не работают в соответствии с установленным параметром videoMaximumDuration?Я тестировал на iPhone 4.1 и iPad 4.3, такой же проблемы не наблюдалось.Похоже, проблема с самим API или аппаратным обеспечением видеомагнитофона для его поддержки.
Может кто-нибудь, пожалуйста, напишите мне, чтобы решить эту проблему, если есть какая-либо возможность (или) через ваш опыт?
Заранее спасибо!