
可以使用 jiecaovideoplayer,非常简单好用,功能强大
好用的视频播放库---jiecaovideoplayer推荐
>
在相册点开该视频的详细信息可以看到具体完整路径,完整路径是:文件管理→内部存储→DCIM→Camera。
以荣耀10为例,查看路径并找到该文件的步骤:
1、手机桌面点击相册。
2、点击想要查看的视频文件。
3、点击右上角的感叹号。
4、查看详细信息,得到路径:内部存储/DCIM/Camera/VID_20190713_164445mp4。
5、返回手机桌面,打开文件管理。
6、点击内部存储。
7、点击DCIM。
8、点击camera。
9、找到文件。
这个问题本身不难,你贴一堆代码这么乱怎么看?
要实现这样的功能呢,建议你自定义一个adapter继承自BaseAdapter,然后在getView方法里,
加载一个item布局,这个item布局可以包含imageView,自己写一个就好。
自定义的adapter可以设置数据源,构造方法中可以加上一个list map数据源,
获取到数据源之后传进来,根据position设置好对应数据就好了。
本文之所以有必要编写并作记录,主要原因是因为在工作中开发出一个万能的自定义camera预览控件之后,本是一个提高效率以及提供一个强大能力的控件,但是产品并不能理解这个万能控件存在的意义,产品无法与技术设计相结合的理解使用;并且发现我们的智能业务部Camera自定义预览技术虽然是使用多年,但是我们并没有真正的形成规范,由于产品在不能够理解系统平台(Android/iOS)给产品和研发带来了什么,导致产品可能会出现在不理解系统平台以及系统知识的情况下,臆想产品所谓的形态;当产品设计脱离了系统平台所支持的技术点以及设计的初衷,就会导致回归问题的时候,出现不必要的讨论,其根结就是一点:“信息不同步,知识不同步”。
所以,为了提高效率,就采用记录和分享的方式,尝试性推动产品、测试、研发三者对工程与架构的同步理解,更深的懂得程序架构设计意义,尝试性通过信息同步的方式,在一个统一的知识储备的平台下,共同完成一个更高效,和高品质的工程产品。(为了能够让非技术:产品设计,以及测试都能够理解,所以,使用了更多的白话解释)
附:强大灵活的FsCameraTextureView(第一版,自适应截取)( 第二版本版本:自适应展示)
首先,抛出几个问题,
1)什么是摄像头支持的previewSize?
2)什么是视频或者的pictureSize
3) 如何获取和查看摄像头支持的PreViewSize 和PictureSize ?
4)手机预览所见的区域SurfaceView(TextureView)与camera 的previewSize的关系是什么?
5)为什么会设计了两种预览方式view,两种预览方式都会有什么样子的效果呢?
一,概述
通过Android Camera拍摄预览中设置setPreviewCallback实现onPreviewFrame接口,实时截取每一帧视频流数据(简单说来,就是通过设置一个接口,接收系统回调通知我们的每一帧数据)
二,知识点
1, camera支持的格式:
2,拍照流程
3,camera权限
三,Android Camera中PreviewSize、 PictureSize、 SurfaceView(TextureView)之间的关系
1,PreviewSize:
相机预览时候的能支持的尺寸,简单的说一下,就是预览的大小,也就是拍照前能够看到的大小。(通过Android手机相机可以试一下,这个参数设置不同,同样的焦距下,拍摄桌子上一个固定距离的东西,看到的视野会不同)
相机的预览尺寸,不能随意的设置值,只能通过camera的parameters的getSupportedPreviewSizes方法,获取支持的预览尺寸列表,并从列表中选择一个设置在parameters中。(通俗简单的说就是,获取camera中能够支持的预览大小合集,如果你想要查看某个预览对应的尺寸,就把该尺寸设置到camera的属性中即可,则camera会返回相对应尺寸的预览数据流提供显示)。
2,PictureSize :
指的是拍照之后,最终拍摄到的大小,也就是的质量。尺寸同样也只能从支持的列表中选取一个设置。 调用camera的takePicture方法(拍照)后,获得拍照的图像数据,注意picturesize和previewsize的宽高比也要保证一致,否则获取的会将preview时的图像裁剪成picturesize的比例。 previewsize的分辨率,只会影响预览时的分辨率,不会影响获取的分辨率,所以preview只是确定了图像的取景最大范围。最终的分辨率是由picturesize来决定。 所以,最好的设置方法,例如:previewsize为1280720,picturesize为25601440。(由于我们没有拍照业务,目前这个知识,不做深究)
3,SurfaceView(TextureView)
用于展示camera预览图像的view,就是将preview获得的数据,放在这个view上。所以如果preview的宽高比和SurfaceView的宽高比不一样,就会导致看到的图像拉伸变形。图像拉伸变形解决的办法:
(1)就是在确定preview的分辨率后,重新设置SurfaceView宽高;
(2)如果SurfaceView宽高定死,则需要获取一个比例适合SurfaceView尺寸的PreviewSize 的preview,尽量小的裁剪,然后填充在SurfaceView中。
4,利用的显示方式,理解Preview与SurfaceView(TextureView)显示关系
ImageView (UI上面设计的一个控件)与bitmap 的关系,比如限定死一个ImageView的大小,但是与ImageView尺寸不一致,就会有几种方案,首先选取一张长方形19201080的,ImageView就是紫色部分,无论长宽比都比ImageView要大。
适配例1:拉伸填充ScaleTypeFIT_XY :虽然被全部填充,但是整个为了适配已经扭曲,失真,缩放到控件大小,完全填充控件大小展示。
适配例2:等比例裁剪填充ScaleTypeCENTER_CROP ,因为在该模式下,会被等比缩放直到完全填充整个ImageView,并居中显示。该模式也是最常用的模式了。如图可以看到,的高度是能完全展示出来的,但是左右部分被进行了裁剪,并没有完全显示。
适配例3 : ScaleTypeCENTER_INSIDE,此模式,用以完全展示内容为目的。将被等比缩放到能够完整展示在ImageView中并居中,如果大小,小于控件尺寸,那么就直接居中展示该
适配ImageView方式还有很多,就不一一列举,这三种已经足够重要,为什么讲解camera预览,却穿插了的适配,其实可以这么理解,camera的preview就是由多张组成,不断的像帧动画一样变化,而SurfaceView就是一个载体,相当于ImageView,业务中定死了SurfaceView的大小之后,被动的承载你选择的previewSize,来展示camera的Preview,你可以选择类似于前面三种例子来理解preview的填充,以下会举例说明preview的填充策略选择有哪几种方式,我们会采用哪种方式:
1)拉伸填充,自适应view,不可取,比如:手机的SurfaceView是整个手机的屏幕尺寸(全屏填充),或者任意尺寸比例的surfaceView,使用这种方式,就如同(适配例1)的方式,导致视频扭曲,拉伸。
2)等比例裁剪填充,目前我们项目中,采用的就是这种方式,并且提供给很多三方使用,已经成为一种独立,并且稳定的技术实现自定义view,简单说一下视频的适配策略方式,SurfaceView随便由业务方,自定义宽度大小,比如业务方选择了19001000的SurfaceView, 我们的适配过程是:(1)从PreviewSize列表中选取最接近SurfaceView尺寸的PreviewSize(假设该摄像头,只支持19201080,和320640),19201080最接近,所以被获取;(此处展示一下蹩脚的英文Try to find an size match aspect ratio and size,尝试找到纵横比与view大小比适中的一个尺寸)(2)等比例裁剪填充到SurfaceView,首先我们设计的逻辑是,先选取一个缩放比例,假设等比例1920的按照SurfaceView的宽度等比例缩小到1900,而为了不让Preview失真,则高度1080等比例缩小的值是106875(等比例方程式,这里就不重复初中的知识,请自行计算),所以被压缩成为19001068这个尺寸,依旧保证完整,并且不失真。(3)将等比例缩减的,19001068进行显示在19001000的SurfaceView中,就会有一种效果类似(适配例2),宽度全部展示,高度被裁剪。(如同 适配例2中左右部分裁剪一样的道理)
3)完全展示camera内容的缩放填充(类似适配例3),我们打开任意一部手机的camera,预览图像都没有全屏幕展示,类似拍照功能,所见即所得,PreviewSize是多少,就显示什么样子的比例尺寸,以及最后生产的照片比例就是多少,我们的自定义view,也可以随意设置大小,此模式下,用以完全展示camera内容为目的。Preview将被等比缩放到能够完整展示在SurfaceView中并居中,但是可能会有部分位置无法填充(类似适配例3显示效果)。
(该方式只是进行了技术储备,由于没有业务场景设计,所以没有使用,目前只是储备了这样的自定义控件)
四,灵活的自定义TextureView预览控件
FsCameraTextureView(第一版,自适应截取):等比例裁剪填充,方式(适配方式2),采用前面说的适配方式2,而产出的一种自定义view,2019年5月产出至今,在金融APP,以及商城的app中使用,经过逐步优化,和多版本检验,目前该控件,拥有以下特点: 1)稳定:目前各个使用场景,均无逻辑崩溃,内存泄漏,线程等任意问题; 2)灵活:随意设置预览view的尺寸大小,自适应任意业务设计;不仅仅满足刷脸业务,并且满足任意相机预览业务方使用; 3)提高效率,减轻工作量:使用简单, *** 作步骤简洁,接入只需要两步;减轻接入端,或者想要使用相机预览的业务的工作量,不需要重复造车,并且安全稳定。
输出的业务方有(经不完全统计):(目前业务为保密进行公网保密处理)1)创新科技业务部-区块链部门 2)泰国人脸识别业务SDK3)S DBank 人脸业务4)核验身份z业务5)HTBank 人脸业务 6)云,商业平台部门
FsAllPreviewCameraTextureView(技术储备版,全预览模式显示):完全展示camera内容的缩放填充,采用前面说的(适配方式3)适合拍照相关的业务使用,优点同样是,外部业务随意改变view大小,可以自适应view,由于目前没有业务方使用,暂时做储备,不深入讲解。
如果可以控件开源成功,后期,我将开源这两个控件,让更多的使用方使用,我们也希望共同技术进步,提高工程产出的使用能力。
预计下一次分享内容是(临时命名)
1)人脸核验内存和线程爆表到泄漏为零
2)分享七年前参于的Scrum(如何提高岗位间效率所定制的敏捷开发过程)
本文参考:
>
使用安卓平板电脑可以观看最新搞笑视频和**,高清宽屏的视听享受,随时随地都可以和好友共同分享精彩大片。 安卓平板电脑中有自带的视频播放器,一般在桌面上就可以看到咯!现在我来简单为大家介绍如何使用安卓平板电脑中的视频播放器来观看**! 1、首先,我们需要把要看的**放进安卓平板电脑中,然后打开视频播放器。 2、该视频播放器会自动搜索安卓平板电脑中所有视频格式的视频,所以大家可以很方便的找到自己保存在安卓平板电脑中的视频文件。点击列表中的一部影视,然后就可以观看咯! 3、在观看影片的同时,我们也要进行一些 *** 作,看到没有,这里有很多的功能按钮哦! 这些功能按钮的具体用法如下: (1)添加标签:用户如果在看的过程中需要中断时,可先点击该按钮设置为书签,方便下次继续观看。 (2)调节亮度:用户可根据自己的需要来相应的调节视频的亮暗。 (3)切换上一个视频/快退:单击时可以切换到上一个视频,长按该功能键则是起到快退的作用。 (4)暂停:观看途中可点击该按钮进行暂停。 (5)切换下一个视频/快进:单击时可以切换到下一个视频,长按该功能键则是起到快进的作用。 (6)屏幕大小切换:该视频播放器提供了16:9及4:3这两种屏幕大小供用户选择。 (7)返回视频列表:点击该键可返回到上一级的视频列表中。 (8)更多选项:这里可以对书签进行删除、设置播放模式、改变输出视频格式等等。 (9)左右两个小喇叭,可以对影片声音播放大小进行设置。
Android开发中经常需要获取摄像头所支持的分辨率列表,然而获取的参数列表是List形式,而且每个分辨率并不是按大小进行排列,不方便查看和返回,所以写了一个重新排列并且格式化输出的方法。
CameraParameters有三个方法获取分辨率:
理论上需要获取预览分辨率和支持分辨率两个值,用来保证设置摄像头的分辨率后不会出现一些玄学概率问题(通常是摄像头推荐的分辨率和最高分辨率的冲突),在实际开发中我用getSupportedVideoSizes()和getSupportedPreviewSizes()死活获取不到值,只能通过getSupportedPictureSizes()拉取列表,获取到的分辨率也是一致的。
需要注意的是,CPU型号也会影响分辨率的获取,同一个摄像头在不同CPU上拉取到的支持分辨率是不一样的,所以还需要对不同CPU机型的摄像头分辨率进行适配。
数据定义
获取摄像头信息,然后循环取最大的width和height,(最大值一般是List的第一个元素,可以直接get(0)),但是有些摄像头拉去到的list是乱序的,所以对他们进行重新按大小排序,方便取值。widthheight就是摄像头的像素,例如500百万像素。
重新排列分辨率列表
格式化输出成常见的宽x高格式
使用完相机之后一定要记得用 Camerarelease()来释放相机的实例,否则后续调用相机的请求(系统内其他app或本应用)都会失败,导致Cameraopen()方法报错“Failed to connect to camera service”。所以同理,出现这种问题的时候也可以排查系统中其他apps是否正在占用摄像头没有释放。
在Android 60版本的摄像头开发中,使用Cameraopen()方法时,需要在onCreate()方法中加入下面的权限申请,否则同样会报错"Failed to connect to camera service"
运行结果如下
以上就是关于android之前用的MediaStore获取视频,但是获取的视频信息非常不准确,根本没法用,请问有什么好的方法吗全部的内容,包括:android之前用的MediaStore获取视频,但是获取的视频信息非常不准确,根本没法用,请问有什么好的方法吗、android系统,手机拍完的视频存在哪个文件夹里、Android开发一个视频播放器,播放列表中有视频缩略图,文件名,路径,时间,大小,怎么让他们放在一个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)