Невозможно создать эскиз изображения из записанного видео

Я создаю миниатюру из записанного видео, которое хранится в каталоге документов, это видео не может быть больше 1 минуты. до времени записи все работает правильно. когда я пытаюсь создать миниатюру из этого записанного видео, ничего не получается. я использовал два способа для одного и того же

  • С помощью MPMoviePlayerController

    -(void)generateThumbnail:(NSURL*)assetURL{
    
     if(assetURL){
    
       MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL];
      UIImage  *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
    
      //AT THIS POINT AS I CHECK IT THIS thumbnail contains 0X000000
       player = nil;
       if (thumbnail) {
           //will use that image to further
       }
      else {
         //here wil doing some intimation
     }
     }
    }
    

    Поскольку вышеприведенный метод завершается выполнением, эти журналы

    Автовоспроизведение: Включение автовоспроизведения Автовоспроизведение: Вероятна поддержка или полный буфер: 0 [MPAVController] Автовоспроизведение: Пропуск автовоспроизведения, буфера недостаточно, чтобы не отставать. [MPAVController] Автозапуск: Включение автозапуска [MPAVController] Автозапуск: Включение автозапуска [MPAVController] Автозапуск: Пропуск автозапуска, отключен (для текущего элемента: 0, на проигрывателе: 1) [MPAVController] Автозапуск: Включение автозапуска[MPAVController] Автозапуск: Пропуск автозапуска, отключено (для текущего элемента: 0, для игрока: 1)

  • С помощью AVAssetImageGenerator

      -(void)genrateThumbnailImageFromAsset:(AVAsset*)_assetObject size:(CGSize)size forTime:(CMTime)thumbTime
      {
     __weak typeof(self) wself = self;
     __block UIImage * thumbNailImage = nil;
      AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:_assetObject];
      generator.appliesPreferredTrackTransform=TRUE;
    
     AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
     {
       switch (result) {
    
        case AVAssetImageGeneratorSucceeded:{
            /*get the generated image*/
            thumbNailImage=[UIImage imageWithCGImage:im];
           // We finished updating the image. Set the visual UI button to the uploaded image
            if (thumbNailImage) {
                //using accordingly
            }
            else
            {
                 //using accordingly
            }
        }
         break;
    
        case AVAssetImageGeneratorFailed:{
             //using  accordingly
            NSLog(@"%@",[error localizedDescription]);
        }
            break;
    
        case AVAssetImageGeneratorCancelled:{
           //using  accordingly
            NSLog(@"%@",[error localizedDescription]);
        }
            break;
    
        default:
            break;
       }
     };
    
     generator.maximumSize = size;
     [generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];    
    }
    

К Выше ничего не получил....пока ищу такой же.


person Kamar Shad    schedule 27.06.2013    source источник


Ответы (2)


Попробуйте этот код:

UIGraphicsBeginImageContext(CGSizeMake(1,1));
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL];
UIGraphicsEndImageContext();         
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];

[player stop];
person Rox    schedule 27.06.2013
comment
вы только что вставили аналогичный код с помощью m, пытались добавить stop методы, но все равно не удалось ...!!!!! - person Kamar Shad; 27.06.2013
comment
вы получаете правильный URL? Пожалуйста, NSLog ваш URL. - person Rox; 27.06.2013
comment
Я правильно получаю URL-адрес и тщательно проверяю каждую вещь, вы читали, что журнал приходит как execution of first wayfinishes. - person Kamar Shad; 27.06.2013
comment
Попробуйте так: UIGraphicsBeginImageContext(CGSizeMake(1,1)); MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:assetURL]; UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; //Player автоматически воспроизводит звук при инициализации [player stop]; UIGraphicsEndImageContext(); - person Rox; 27.06.2013
comment
чувак, я по ошибке использовал urlWithString вместо fileURLWithPath, так как я изменил этот метод, все работает правильно, спасибо, что ответил мне...... +1 за то же самое - person Kamar Shad; 27.06.2013

Наконец-то получилось, на самом деле я по ошибке указал неправильный метод для создания URL-адреса этого записанного видео.

Я использовал urlWithString вместо fileURLWithPath, так как использовал fileURLWithPath, все работало нормально.

person Kamar Shad    schedule 27.06.2013