Android 保存视频以及读取视频
j最近在Adnroid开发用到了视频的读写操作,记录备忘一下:
都是借用android的med
1、保存TextView到mp4视频
2、读取MP4视频
/*** 获取本地视频缩略图* @param* @return*/public void getVideoThumbnail() {//获得当前时间int sample = 5;//每秒5帧Bitmap bitmap = null;MediaMetadataRetriever mmr = new MediaMetadataRetriever();//实例化MediaMetadataRetriever对象File file = new File(FileHelper.instance().getVideoFilePath(this));//实例化File对象,文件路径为/storage/sdcard/Movies/video.mp4FileOutputStream fos = null;File fileGaode = null;if(file.exists()){mmr.setDataSource(file.getAbsolutePath());//设置数据源为该文件对象指定的绝对路径// 取得视频的长度(单位为毫秒)String time = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);// 转换单位为秒)int seconds = Integer.valueOf(time) / 1000;int dowsample = seconds * sample;// Bitmap bitmap = mmr.getFrameAtTime();//获得视频第一帧的Bitmap对象// 得到每一秒时刻的bitmap比如第一秒,第二秒for (int i = 1; i <= dowsample; i++) {bitmap = mmr.getFrameAtTime(i * 1000 * 1000 / sample, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);String path = FileHelper.instance().getPicFilePath(this) + "/" + i + ".jpg";//保存if(bitmap!=null) {try{fos = new FileOutputStream(path);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();}catch (Exception e){}}}}else{Toast.makeText(MainActivity.this, "文件不存在", Toast.LENGTH_SHORT).show();//文件不存在时,弹出消息提示框}return bitmap;}
public void saveBitmap2file(Bitmap bmp, String filename) {if (bmp == null){return;}String savePath;String fileName = filename + ".jpeg";savePath = FileHelper.instance().getSDcardPath();File filePic = new File(savePath + fileName);try {if (!filePic.exists()) {filePic.getParentFile().mkdirs();filePic.createNewFile();}FileOutputStream fos = new FileOutputStream(filePic);bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();// Toast.makeText(MainActivity., "保存成功,位置:" + filePic.getAbsolutePath(), Toast.LENGTH_SHORT).show();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
以下为测试在SD卡读写文件
{// 在SD卡目录下创建文件File file = new File(FileHelper.instance().getSDcardPath(), "mysdcard.txt");Log.d(TAG, "file.exists():" + file.exists() + " file.getAbsolutePath():"+ file.getAbsolutePath());if (file.exists()) {file.delete();try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}// 在SD卡目录下的文件,写入内容FileWriter fw = null;try {fw = new FileWriter(file);} catch (IOException e) {e.printStackTrace();}try {fw.write("我sdcard内容.....");} catch (IOException e) {e.printStackTrace();}try {fw.close();} catch (IOException e) {e.printStackTrace();}Toast.makeText(MainActivity.this, "SD卡写入内容完成...",Toast.LENGTH_LONG).show();Log.d(TAG, "SD卡写入内容完成...");// 读取SD卡文件里面的内容FileReader fr = null;try {fr = new FileReader("/mnt/sdcard/mysdcard.txt");} catch (FileNotFoundException e) {e.printStackTrace();}BufferedReader r = new BufferedReader(fr);String result = null;try {result = r.readLine();} catch (IOException e) {e.printStackTrace();}Log.d(TAG, "SD卡文件里面的内容:" + result);Toast.makeText(MainActivity.this, "SD卡文件里面的内容...",Toast.LENGTH_LONG).show();mBtnRecord.setText(result);
}
3、FFmpegMediaMetadataRetriever 也挺好用
https://github.com/wseemann/FFmpegMediaMetadataRetriever
使用
(1)在app下建立libs ,下载aar放进去
在app的build.gradle的andriod中加入
repositories {flatDir {dirs 'libs' // aar目录}
我的:
android {compileSdkVersion 28buildToolsVersion '28.0.3'defaultConfig {applicationId ""minSdkVersion 21targetSdkVersion versionTargetversionCode 1versionName "1.0"multiDexEnabled truetestInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"externalNativeBuild {cmake {cppFlags "-std=c++11 -frtti -fexceptions "abiFilters "armeabi-v7a", "arm64-v8a"arguments "-DANDROID_STL=gnustl_static" //该处添加gnustl_static,使得可读取opencv JNI的库文件。}ndk {abiFilters "armeabi-v7a", "x86"}}}buildTypes {release {zipAlignEnabled false //开启优化对齐minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}debug {zipAlignEnabled falseminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}externalNativeBuild {cmake {path "CMakeLists.txt"}}sourceSets{main{jniLibs.srcDirs = ['src/main/jniLibs']}}repositories {flatDir {dirs 'libs' // aar目录}}lintOptions {checkReleaseBuilds false// Or, if you prefer, you can continue to check for errors in release builds,// but continue the build even when errors are found:abortOnError false} }
(2)在app的build.gradle中
Add the following maven dependency to your project's build.gradle
file:
dependencies {compile 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.14'
}
Optionally, to support individual ABIs:
dependencies {compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-armeabi:1.0.14'compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-armeabi-v7a:1.0.14'compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-x86:1.0.14'compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-mips:1.0.14'compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-x86_64:1.0.14'compile 'com.github.wseemann:FFmpegMediaMetadataRetriever-arm64-v8a:1.0.14'
}
Android 保存视频以及读取视频相关推荐
- 视频操作_01视频读写:视频读写+读取视频+保存视频
1 从文件中读取视频并播放 在OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件: 1.创建读取视频的对象 cap = cv.VideoCapture( ...
- python 读视频_Python3读取视频保存视频
使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1.利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小 ...
- python使用方法视频-Python读取视频的两种方法(imageio和cv2)
用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...
- python怎么导入视频-Python读取视频的两种方法(imageio和cv2)
用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...
- 用python打开视频_Python读取视频的两种方法(imageio和cv2)
用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...
- 使用MATLAB读取视频并获取视频信息、分帧保存
题外话:初学MATLAB,是因为跟着老师做项目,与MATLAB机器学习相关,包含了智能信息处理,是从前未接触的领域.因此,想写博客来记录自己的学习进度.老师安排的第一次任务为:用MATLAB读取视频, ...
- Python-OpenCV 笔记1 -- 图像与视频的读取、显示、保存
Python-OpenCV 笔记1 – 图像与视频的读取.显示.保存 一.图片的读取.显示.保存 1.图片读取 原型: imread (filename, flags=None) 参数: filena ...
- opencv读取视频并保存为图片
1.功能: opencv读取指定文件夹中的视频文件,按照一定的间隔截取某些帧,将这些帧图像连续命名,存储在指定文件夹里. 2.代码如下: (1)IplImage #include <stdlib ...
- opencv基本操作二(读取视频流与保存视频、读取摄像头并保存视频)
opencv基本操作二 要点 代码 例程一 例程二 要点 opencv常用读视频函数 cv2.VideoCapture .cv2.VideoCapture.get 等,可以参考这里 opencv常用写 ...
最新文章
- 根据某一列的进行去重的小工具----duplicated.exe
- Smartmail外贸CRMBuild1.0版使用说明书
- Ubuntu增加(swap)交换分区
- AWS发布低延迟互动直播服务
- pro git 阅读笔记1 基本操作
- jquery遍历节点
- 自动化CodeReview - ASP.NET Core请求参数验证
- matlab 文本分析工具,MATLAB,Simulink. - Text Analytics , 文本分析工具箱-鈦思科技
- ad15图层显示_AD15使用及设置
- 阿里菜鸟java后台开发电话面试
- 计算机中回收站的作用,windows7回收站的功能与作用
- 我国网络营销发展的现状、障碍与对策
- 高通安卓关闭WiFi服务不卸载驱动
- python第三方库re库基本介绍
- 树莓派3B qt+mplayer制作音乐播放器(10)
- 贝叶斯分类器算法及案例详解
- SAP ABAP开发个别概念理论区分理解
- mysql checking_高并发下MySQL出现checking permissions
- 苹果全球企业传播副总裁考顿正式退休
- Axure 制作iphonex手机壳