ksvc / KSYMediaPlayer_iOS

金山云iOS播放SDK(KSYUN Live Streaming player SDK),支持RTMP HTTP-FLV HLS 协议(supporting RTMP HTTP-FLV HLS protocol),直播延时2-3秒(Living delay 2 or 3 seconds)
http://v.ksyun.com/
Apache License 2.0
563 stars 144 forks source link

视频快进获取缩略图卡顿 #44

Open feng520ckx opened 7 years ago

feng520ckx commented 7 years ago

下面两句代码我是放到了Slider的valueChange方法里的,滑动了Slider就去获取缩略图 然后显示出来

 UIImage *thumbImage=[self.prober getVideoThumbnailImageAtTime:interval width:0 height:0];

 self.srcImageView.image=thumbImage;

运行之后 ,发现放到主线程里获取缩略图会显得有些卡顿,

然后就改了一下,把获取缩略图的方法放到了子线程里执行,获取到了图片之后放回到主线程设置图片,用gcd创建了一个串行队列,代码如下

dispatch_queue_t queue=dispatch_queue_create("playerCaptureThumbQueue", DISPATCH_QUEUE_SERIAL);
    dispatch_async(queue, ^{

        UIImage *thumbImage=[self.prober getVideoThumbnailImageAtTime:interval width:0 height:0];
        dispatch_async(dispatch_get_main_queue(), ^{
           self.srcImageView.image=thumbImage;
        });
  });

运行之后发现获取的缩略图是如代码所设置的,一个一个获取的,当手指松开拖动Slider的时候,UIImageView中显示的图片还是一个一个加载的 会持续一会儿

然后我把串行队列改成了并行队列,程序执行 ,拖动了一下Slider之后,就崩溃了,想问一下有没有解决方案呢。

mayudong1 commented 6 years ago

getVideoThumbnailImageAtTime方法的初衷是为了获取视频中某个时间点的图像,在每次调用时都会有对视频文件的打开关闭操作,未考虑到要频繁的调用来获取一系列的缩略图
所以目前对你这种使用方式的支持确实不好

bigsong611 commented 6 years ago

你好,我开发的时候也遇到这个问题了,getVideoThumbnailImageAtTime异步操作老崩溃,请问你最后用什么办法解决的