如何使用Glide获取流视频链接的帧

时间:2017-07-07 09:54:25

标签: android android-glide

在我的Android电视应用程序中,一开始我想显示我的每个流链接的框架。我目前的解决方案是使用LoaderManager,这种技术的问题是它太慢(应用程序崩溃)。

FFmpegMediaMetadataRetriever to load and set video stream link.
this.retriever = new FFmpegMediaMetadataRetriever();
Bitmap bitmap = null;
retriever.setDataSource(this.mSelectedStream.getStreamUrl());
bitmap = retriever.getFrameAtTime();
drawable = new BitmapDrawable(bitmap);
retriever.release();

我发现this thread解释了滑行可用于从视频链接加载图片。

BitmapPool bitmapPool = Glide.get(getApplicationContext()).getBitmapPool();
                int microSecond = 6000000;// 6th second as an example
                VideoBitmapDecoder videoBitmapDecoder = new VideoBitmapDecoder(microSecond);
                FileDescriptorBitmapDecoder fileDescriptorBitmapDecoder = new FileDescriptorBitmapDecoder(videoBitmapDecoder, bitmapPool, DecodeFormat.PREFER_ARGB_8888);
                Glide.with(getApplicationContext())
                        .load(yourUri)
                        .asBitmap()
                        .override(50,50)// Example
                        .videoDecoder(fileDescriptorBitmapDecoder)
                        .into(yourImageView);

但是当我使用上面的代码时,我得到了“无法从包外部访问”错误的VideoBitmapDecoder。

exmaple link =“http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

任何想法? 感谢

1 个答案:

答案 0 :(得分:1)

我已经使用这个片段从视频帧中取出拇指钉。试试吧

 Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(media_url,
                MediaStore.Images.Thumbnails.MINI_KIND);
        BitmapDrawable BD = new BitmapDrawable(thumbnail);
        videoView.setBackgroundDrawable(BD);