zoukankan      html  css  js  c++  java
  • 获得网络视屏的第一张帧图片

    //------------baseadapter适配器中的---getView方法中------------------------------------------

    @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            ShiPin shiPin=shiPins.get(position);
            if (convertView==null) {
                convertView=View.inflate(context, R.layout.list_item, null);
                holder=new ViewHolder();
                holder.img=(ImageView) convertView.findViewById(R.id.iv_img);
                holder.username=(TextView) convertView.findViewById(R.id.tv_shipin_name);
                holder.videotime=(TextView) convertView.findViewById(R.id.tv_shipin_time);
                convertView.setTag(holder);                                
            }
            else{
                holder=(ViewHolder) convertView.getTag();
            }
            
            holder.username.setText(shiPin.getUsername());
            holder.videotime.setText(shiPin.getVideotime());
            
            //视频的网路地址   URL
            final String urls = "http://101.200.142.201:8080/VideoPlay/video" + shiPin.getVideourl();
            Log.i("111", urls);
            //使用异步                                                              位图
            new AsyncTask<String, Integer, Bitmap>(){

                @Override
                protected Bitmap doInBackground(String... params) {
                    
                    
                    Bitmap bitmap = createVideoThumbnail(params[0],100,90);

                    return bitmap;
                }

                @Override
                protected void onPostExecute(Bitmap s) {
                    super.onPostExecute(s);
                    //设置图片
                    holder.img.setImageBitmap(s);
                }
                //视频的网络地址
            }.execute(urls);

        return convertView;
        }

    //-----------------另写一个方法----------------------------------

    private Bitmap createVideoThumbnail(String url, int width, int height) {
            Bitmap bitmap = null;
            
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            int kind = MediaStore.Video.Thumbnails.MINI_KIND;
            try {
                if (Build.VERSION.SDK_INT >= 14) {
                    retriever.setDataSource(url, new HashMap<String, String>());
                } else {
                    retriever.setDataSource(url);
                }
                bitmap = retriever.getFrameAtTime();
            } catch (IllegalArgumentException ex) {
                // Assume this is a corrupt video file
            } catch (RuntimeException ex) {
                // Assume this is a corrupt video file.
            } finally {
                try {
                    retriever.release();
                } catch (RuntimeException ex) {
                    // Ignore failures while cleaning up.
                }
            }
            if (kind == MediaStore.Images.Thumbnails.MICRO_KIND && bitmap != null) {
                bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
                        ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
            }
            return bitmap;
        }

  • 相关阅读:
    微信小程序UI自动化: minium文档部署02
    微信小程序UI自动化: 选择工具/框架01
    gitalb学习:02gitlab runner安装
    gitlab学习: 01安装gitlab
    01.Python中一切皆对象
    Prometheus+Noe Expoter+Grafana:资源监控初体验(基于cenots7,没使用docker)
    01. 判断三角形的函数
    Locust性能测试:上手初体验
    史上最全的邮箱测试方法!
    使用 Python 处理非对称加密,竟然如此简单
  • 原文地址:https://www.cnblogs.com/changyiqiang/p/5788156.html
Copyright © 2011-2022 走看看