广告
返回顶部
首页 > 资讯 > 移动开发 >Android如何获取视频首帧图片
  • 749
分享到

Android如何获取视频首帧图片

图片Android 2022-06-07 01:06:56 749人浏览 薄情痞子
摘要

Android获取视频首帧图片或第n秒的图片,供大家参考,具体内容如下 这里介绍如何获取视频首帧或者第n秒的图片并保存在本地,直接上代码: import android.gr

Android获取视频首帧图片或第n秒的图片,供大家参考,具体内容如下

这里介绍如何获取视频首帧或者第n秒的图片并保存在本地,直接上代码:


import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFORMat;
import java.util.Calendar;
import java.util.GreGorianCalendar;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
  private ImageView imageView;//声明ImageView对象
  private Button button;//声明Button对象
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView=(ImageView)findViewById(R.id.imageView);//获取布局管理器中的ImageView控件
    button=(Button)findViewById(R.id.button);//获取布局管理器中的Button控件
    //设置按钮点击事件监听器
    button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        getFirstframe();
      }
    });
  }
  //获取视频首帧图片并保存到本地
  private void getFirstframe(){
    MediaMetadataRetriever mmr=new MediaMetadataRetriever();//实例化MediaMetadataRetriever对象
    String path = Environment.getExternalStorageDirectory() + "/shipin.mp4";
    File file=new File(path);//实例化File对象,文件路径为/storage/emulated/0/shipin.mp4 (手机根目录)
    if(!file.exists()){
      Toast.makeText(MainActivity.this, "文件不存在", Toast.LENGTH_SHORT).show();
    }
    mmr.setDataSource(path);
    Bitmap bitmap = mmr.getFrameAtTime(0); //0表示首帧图片
    mmr.release(); //释放MediaMetadataRetriever对象
    if(bitmap!=null){
      Toast.makeText(MainActivity.this, "获取视频缩略图成功", Toast.LENGTH_SHORT).show();
      imageView.setImageBitmap(bitmap);//设置ImageView显示的图片
      //存储媒体已经挂载,并且挂载点可读/写。
      if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        bitmap.recycle(); //回收bitmap
        return;
      }
      try {
        Calendar now = new GregorianCalendar();
        SimpleDateFormat simpleDate = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
        String picture_Name = simpleDate.format(now.getTime()); //获取当前时间戳作为文件名称,避免同名
        String framePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/framePicture/"; //图片保存文件夹
        File frame_file = new File(framePath);
        if (!frame_file.exists()) { //// 如果路径不存在,就创建路径
          frame_file.mkdirs();
        }
        File picture_file = new File(framePath,picture_Name + ".jpg"); // 创建路径和文件名的File对象
        FileOutputStream out = new FileOutputStream(picture_file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();  //注意关闭文件流
        Toast.makeText(MainActivity.this, "保存图片成功!", Toast.LENGTH_SHORT).show();
      } catch (Exception e) {
        Toast.makeText(MainActivity.this, "保存图片失败!" + e.getMessage().toString(), Toast.LENGTH_LONG).show();
        e.printStackTrace();
      }
    }else{
      Toast.makeText(MainActivity.this, "获取视频缩略图失败", Toast.LENGTH_SHORT).show();
    }
  }
}

界面xml代码:


<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@mipmap/ic_launcher"/>
  <Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="获取视频缩略图"/>
</LinearLayout>

记得添加文件读写权限:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

效果图如下:

如果需要获取第n秒的图片,把getFrameAtTime()方法的数值改成n*1000就可以。如需要获取视频第5秒图片,则把上面代码


Bitmap bitmap = mmr.getFrameAtTime(0); //0表示首帧图片

修改成


Bitmap bitmap = mmr.getFrameAtTime(5*1000); 
您可能感兴趣的文章:android 获取视频第一帧作为缩略图的方法


--结束END--

本文标题: Android如何获取视频首帧图片

本文链接: https://www.lsjlt.com/news/29974.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android如何获取视频首帧图片
    Android获取视频首帧图片或第n秒的图片,供大家参考,具体内容如下 这里介绍如何获取视频首帧或者第n秒的图片并保存在本地,直接上代码: import android.gr...
    99+
    2022-06-07
    图片 Android
  • Android如何获取图片或视频略缩图
    根据指定的图像路径和大小来获取缩略图 此方法有两点好处: 1.使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度,第二次读取的bitmap是根...
    99+
    2022-06-06
    图片 Android
  • Canvas如何获取视频第一帧缩略图
    本篇内容主要讲解“Canvas如何获取视频第一帧缩略图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Canvas如何获取视频第一帧缩略图”吧!记录下一个疑问,最近在重新看canvas做点Demo...
    99+
    2023-06-09
  • vue如何获取视频第一帧
    目录vue获取视频第一帧vue视频截取第一帧图片-组件Video to Image组件文件vue获取视频第一帧 findvideocover() { let size...
    99+
    2022-11-13
    vue视频 vue视频第一帧 vue获取视频第一帧
  • Python提取视频帧图片实例代码
    为了从视频中提取每一帧图片,编写Python脚本实现该功能 video_path为指定的视频路径 interval为指定分割视频是是否跳帧,默认不跳帧,即全部分割 width, he...
    99+
    2022-11-12
  • android 获取视频,图片缩略图的具体实现
    1、获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图 (1)缺点就是必须更新媒体库才能看到最新的视频的缩略图 [java] 代码如下:  &nb...
    99+
    2022-06-06
    图片 缩略图 Android
  • Android编程获取图片和视频缩略图的方法
    本文实例讲述了Android编程获取图片和视频缩略图的方法。分享给大家供大家参考,具体如下: 从Android 2.2开始系统新增了一个缩略图ThumbnailUtils类,位...
    99+
    2022-06-06
    方法 图片 缩略图 Android
  • php如何利用ffmpeg获取视频第一帧为缩略图
    目录phpffmpeg获取视频缩略图1.环境2.centos7安装ffmpeg3.项目安装ffmpeg包4.php代码附Fmpeg读取视频信息总结php ffmpeg获取视频缩略图 ...
    99+
    2022-11-13
  • Android获取SD卡上图片和视频缩略图的小例子
          如何判断文件呢 可以通过Cursor遍历数据库,对比INTERNAL_CONTENT_URI字段的值,这是一个Ur...
    99+
    2022-06-06
    sd 图片 sd卡 缩略图 Android
  • android提取视频多张图片和视频信息实例
    话说2016年的直播比较火,2017年短视频又火了。但对于开发者来说隐藏在这背后的技术才是我们所关心的,毕竟我们是靠技术吃饭的。现在在安卓中多媒体服务比较强大,而与视频有关的视频基本处理技术有必要学习一下。我前段时间也在做有关视频的一些需求...
    99+
    2023-05-31
    android 提取 视频
  • php中怎么用ffmpeg获取视频第一帧为缩略图
    这篇文章主要介绍了php中怎么用ffmpeg获取视频第一帧为缩略图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php中怎么用ffmpeg获取视频第一帧为缩略图文章都会有所收获,下面我们一起来看看吧。php f...
    99+
    2023-06-29
  • Android中如何获取视频文件的截图、缩略图
    背景 公司最近要求给我负责的APP加上视频录制和发布的功能,我简单的完成了基本的录制和视频压缩功能,后来发现发布接口需要上传视频的截图,网上搜索了一下资料,在这里整理一下。 代...
    99+
    2022-06-06
    缩略图 Android
  • 如何获取Android raw目录下视频的缩略图
    这篇文章主要介绍如何获取Android raw目录下视频的缩略图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!以下代码用于获取 Android raw目录下视频文件的缩略图:private Drawable...
    99+
    2023-05-31
    android raw
  • Android开发之多媒体文件获取工具类实例【音频,视频,图片等】
    本文实例讲述了Android开发之多媒体文件获取工具类。分享给大家供大家参考,具体如下:package com.android.ocr.util;import java.io.File;import java.util.ArrayList;...
    99+
    2023-05-30
    android 多媒体 工具类
  • Python获取网络图片和视频的示例代码
    目录1.网络获取Google图像1.1google_images_download1.2BeautifulSoup1.3pyimagesearch2.网络获取Youtube视频1.网...
    99+
    2022-11-13
  • Android如何从图片获取二维码
    这篇文章主要为大家展示了Android如何从图片获取二维码,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。之前的博客我记得讲过关于扫描二维码的内容,昨天,组长让我不仅可以扫描获取二维码,还可以通...
    99+
    2023-05-31
    android roi %d
  • C++ ffmpeg如何实现将视频帧转换成jpg或png等图片
    本篇内容介绍了“C++ ffmpeg如何实现将视频帧转换成jpg或png等图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、如...
    99+
    2023-07-05
  • 轻松获取图片和视频文件的Exif信息-Java篇
    前言        随着现在实景地图的如火如荼建设,无人机等航拍测绘手段的不断升级,我们在获取全景照片或者正射影像,全景视频等数据上更加快速、便捷。由于无人机本身不进行相关数据的处理,比如全景地图的生成、视频的信息解析等。以全景照片为例,无...
    99+
    2023-10-01
    机器学习 元数据提取 大数据
  • 利用Android如何获取sdcard中的图片
    利用Android如何获取sdcard中的图片?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先你要在AndroidManifest.xml申请读取sdcard...
    99+
    2023-05-31
    android roi sdcard
  • php+ffmpeg如何获取视频缩略图、视频分辨率等相关信息
    目录前言下面介绍使用ffmpeg获取视频首帧的方法。FFmpeg获得视频文件的缩略图Fmpeg读取视频信息Fmpeg获得视频文件的总长度时间和创建时间总结前言 ffmpeg是一款开源...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作