【问题标题】:How to generate the Thumbnail of video URL flv format?如何生成视频 URL flv 格式的缩略图?
【发布时间】:2016-09-17 12:32:14
【问题描述】:

如何获取我的视频网址的缩略图,如下所示

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 如何获取缩略图请帮助我。谢谢。

【问题讨论】:

  • 首先确保您的 FLV 包含用于视频编解码器的 H.264,现在手动在文件中查找关键帧的字节。提取 H.264 帧数据并将其提供给您的 iOS 解码器以获得关键帧的可视图像。那是你的缩略图。我不使用 iOS,所以告诉我你知道如何用那个系统处理字节吗? & 是否可以只向解码器提供(附加)原始 H.264 字节(不涉及 MP4 等容器)?

标签: ios uiimage flv video-thumbnails


【解决方案1】:

使用下面的代码,

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>头文件

上面的代码对我有用,希望对你有帮助

【讨论】:

  • 对我来说不,它没有显示任何东西每次都失败了 if 条件。我认为这是视频格式的问题。
  • 第一个 if 条件或第二个 if 条件
  • 第一个if条件
  • 如何获取网址?如果你得到imagepickercontroller
  • @IyyappanRavi 再次查看问题,他们说他们收到错误This media format is not supported。你认为 iOS 支持 FLV 格式吗?我认为只支持 MPEG 编解码器,因为 Apple 已经是 MPEG 卡特尔的成员。不要指望 FLV、OGV、WebM、AVI 或其他“竞争”格式在没有自定义解码器代码的情况下在 iOS 上工作......
猜你喜欢
  • 2017-03-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 2011-07-04
  • 2011-02-19
  • 1970-01-01
  • 2012-10-16
  • 2018-06-14
相关资源
最近更新 更多