2016-05-20 2 views
1

Как я могу получить эскиз URL мое видео URL, как показано нижеКак создать миниатюру формата URL-адреса видео?

http://ServerDomain/streams/16476084045/3d4659d8e93bdfbdb3619a4a684c93be.flv 

Я использую это ниже кода

AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:url options:nil]; 
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset1]; 
generator.appliesPreferredTrackTransform = YES; 

//Set the time and size of thumbnail for image 
NSError *err = NULL; 
CMTime thumbTime = CMTimeMakeWithSeconds(0,30); 
CGSize maxSize = CGSizeMake(425,355); 
generator.maximumSize = maxSize; 

CGImageRef imgRef = [generator copyCGImageAtTime:thumbTime actualTime:NULL error:&err]; 
UIImage *thumbnail = [[UIImage alloc] initWithCGImage:imgRef]; 
cell.videoImage1.image=thumbnail; 

Но я получаю ниже ошибки

Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo={NSUnderlyingError=0x7fe8d3057900 {Error Domain=NSOSStatusErrorDomain Code=-12847 "(null)"}, NSLocalizedFailureReason=This media format is not supported., NSLocalizedDescription=Cannot Open} 

И я я не использую MPMoviePlayer Как получить изображение миниатюр Пожалуйста, помогите мне. Спасибо.

+0

проверки это HTTP: // StackOverflow .com/questions/1347562/get-thumbnail-from-a-video-url-or-data-in-iphone-sdk. @ Bittoo – Madhu

+0

Сначала убедитесь, что ваш FLV содержит H.264 для видеокодека. Теперь вручную найдите байты ключевого кадра в файле. Извлеките данные кадра H.264 и передайте их на ваш iOS-декодер, чтобы получить визуальный образ ключевого кадра. Это твоя миниатюра. Я не использую iOS, поэтому скажите мне, знаете ли вы, как обрабатывать байты с этой системой? & также возможно просто передать (добавить) необработанные H.264 байты в декодер (без участия контейнера, такого как MP4)? –

ответ

2

Используйте этот код, приведенный ниже,

AVAsset *avAsset = [AVURLAsset URLAssetWithURL:videoURL options:nil]; 

if ([[avAsset tracksWithMediaType:AVMediaTypeVideo] count] > 0) 
{ 
    AVAssetImageGenerator *imageGenerator =[AVAssetImageGenerator assetImageGeneratorWithAsset:avAsset]; 
    Float64 durationSeconds = CMTimeGetSeconds([avAsset duration]); 
    CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 
    NSError *error; 
    CMTime actualTime; 

    CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:kCMTimeZero actualTime:&actualTime error:&error]; 


    if (halfWayImage != NULL) 
    { 

      NSString *actualTimeString = (NSString *)CFBridgingRelease(CMTimeCopyDescription(NULL, actualTime)); 
      NSString *requestedTimeString = (NSString *)CFBridgingRelease(CMTimeCopyDescription(NULL, midpoint)); 
      NSLog(@"Got halfWayImage: Asked for %@, got %@", requestedTimeString, actualTimeString); 

      UIImage *img=[UIImage imageWithCGImage:halfWayImage]; 

      self.myimageView.image= img; //img is thumbnail image ; 

     } 

} 

не забудьте #import <AssetsLibrary/AssetsLibrary.h> заголовка файла

выше код работает для меня, надеюсь, его полезно для вас

+0

НЕТ для меня ничего не показывает, если это условие не выполняется. Я думаю, что это проблема формата видео. – Bittoo

+0

первый если состояние или второй если состояние –

+0

первый если состояние – Bittoo

Смежные вопросы