videoview

Android HTTP边下边播

南笙酒味 提交于 2020-04-07 06:20:26
本文简单地分享一下在Android平台做HTTP边下载边播放的一些经验,希望对初学者有所帮助。 1. 为什么播放器在播放视频文件的时候,都知道该怎么去解码、该以怎样的时间间隔去显示每一帧呢? 因为无论是mp4、avi、flv、mkv还是其他格式的音视频文件,都存在一个称为metadata的数据块,记录了当前文件的图像尺寸、编码格式、帧率、码率等信息,播放器可以通过解析metadata得到这些信息。 2. 迅雷边下边播的原理是怎样的? 迅雷在边下边播的时候,不会像往常一样根据资源链接数优先排序进行乱序下载,而是会首先去下载含有metedata的数据块,从而配置好解码器和显示间隔等逻辑,然后保证至少有一个线程顺序地获取/下载即将播放的数据块,从而实现边下边播。 3. Android中如何实现边下边播? Android的VideoView是支持http协议的边下边播的,只需要将远程http服务器上的视频文件的HTTP URL地址通过 VideoView.setVideoPath 传进去,start之后VideoView就会直接边下载边解码播放了。 不过VideoView支持的视频格式有限,一般只支持mp4、3gp、avi格式 因此,你也可以直接通过"HTTP GET"请求进行文件下载,得到文件的metedata之后,解析出该文件的编码、帧率等信息(例如:mp4码流的话,可以通过

仿抖音上下滑动播放视频

怎甘沉沦 提交于 2020-03-10 22:14:17
不少朋友对短视频,上下滑动播放视频效果比较比较感兴趣,今天看看这个案例。 1、效果图: 讲下大概思路,使用Recycleview配合自定义LinearLayoutManager来实现这个功能,这里着重说下自定义LinearLayoutManager的实现可以看到每当下一个item滑入屏幕时,上面的item会继续播放视频,而滑入的item只有当全部进入屏幕才会播放,而且当手指抬起时,当前item会根据滑动的距离相应的自动滑入滑出,针对这种情形,就会想到使用SnapHelper RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。 SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让RecyclerView滚动停止时相应的Item停留中间位置。25.1.0版本中官方又提供了一个PagerSnapHelper的子类,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示,也就是说使用SnapHelper可以帮助RecyclerView滑动完成后进行对齐操作

VideoView#setVideoPath方法不回调

不打扰是莪最后的温柔 提交于 2020-03-04 02:05:37
今天准备做一个视频播放的Demo,为FrameLayout包裹着VideoView,默认我把FrameLayout和VideoView都设置成了View.GONE,所以这样一直导致VideoView#setVideoPath不回调,后来查资料才发现VideoView加载资源前不能设置为不可见,所以通过设置Alpha即可 来源: CSDN 作者: 老头儿ii 链接: https://blog.csdn.net/qq_40833790/article/details/104641756

android视频适配与裁剪

。_饼干妹妹 提交于 2020-03-01 20:29:31
首先说下基本背景, 当我们使用android系统原生的VideoView播放视频时, 在XML中给它设置的一个尺寸, 但最终视频开始播放后, VideoView实际的尺寸可能并不是这个尺寸设置的大小. VideoView在测量自身的尺寸时会依据视频的真实尺寸来调整自己的大小, 遵循以下规则: 1. 实际视频在VideoView上播放时所有部分都是可见的,或缩小或放大, 总之一定要全部显示出来,不会裁剪实际视频. 2. 尽量保持实际视频的长宽比例, 具体是首先以我们用户定义的长度为标准, 等比例缩放视频大小, 直到长度达到我们定义的长度, 然后宽度(等比例缩放后的宽度)与我们定义的宽比较, 大于则以我们定义的宽度为准, 这样视频会在竖直方向上压缩, 最终播放时也就不会成比例了; 小于则它以视频缩放后的宽度为准, 这样它会比我们定义的高度小,最终播放的效果是等比例的. 最近开发有如下需求: 视频等比例放大,直至一边铺满VideoView(或屏幕)的某一边,另一边超出View的另一边,再移动到View的正中央,这样长边两边会被裁剪掉同样大小的区域,视频看起来不会变形,也即是:先把视频区(实际的大小显示区)与View(定义的大小)区的两个中心点重合, 然后等比例放大或缩小视频区,直至一条边与View的一条边相等,另一条边超过View的另一条边,这时再裁剪掉超出的边,

videoview使用的一个小技巧

牧云@^-^@ 提交于 2020-03-01 19:29:25
今天发现关于videoview组件控制屏幕灰度的一个小技巧。分享给大家,同时,紧张工作的各位可以自己去尝试一下,将视频搞搞怪什么de,娱乐娱乐。 ,比如在视频上面打马赛克,根据手机传感器来关联调节视频的灰度什么的,可以指定在屏蔽任意一个地方。 本来准备是想美化一下videoview的给视频组件加个漂亮的边框。 然后试着,将videoview的背景设置为红色。 打开视频播放,结果整个播放界面都变成了红色。 有意思把。这说明,videoview的播放界面比backgroud层级还要低。 也就是说backgroud是在播放界面之上的。说到这里 相信很多人心里已经有个底了。 对~~~我们可以通过设置不同透明程度背景色来实现染色。 相信放一些透明图片也是极好的~~~ 这里放几个效果图给大家看看,就不做复杂的处理了。 原图 #55ff0000 #88888888 来源: oschina 链接: https://my.oschina.net/u/1264182/blog/165208

MobliePlayer自定义最简单的视频播放器

老子叫甜甜 提交于 2020-02-18 14:44:41
MobliePlayer自定义最简单的视频播放器 tags:最近7天 前言: 通过android系统自的播放器快速自定义播放器VideoView用于播放本地视频。 新建一个Activity 新建的SystemVideoPlayer Activity继承于Activity,布局文件为activity_system_video_player, public class SystemVideoPlayer extends Activity { private VideoView videoview; private Uri uri; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_system_video_player); videoview = (VideoView) findViewById(R.id.videoview); //得到播放地址,本地址由调用的面面通过setDataAndType传送过来 uri=getIntent().getData(); //设置播入器的地址到VideoView videoview.setVideoURI(uri);

JS轮流播放视频和图片

半世苍凉 提交于 2020-01-07 17:43:53
主要JS逻辑 function handleImgVideoUrl(curr,srcUrl,imgsAndVideos) { // 设置图片和视频播放 var vList = []; for (let index = 0; index < imgsAndVideos.length; index++) { vList.push( srcUrl + imgsAndVideos[index]); } var myvideo = document.getElementById("videoView"); var vLen = vList.length; if (vList[curr].indexOf('V_') >= 0) { $("#imgView").hide(); $("#videoView").show(); let url = vList[curr]; $('#videoView').attr('src', url); // myvideo.muted=true; curr++; if (curr >= vLen) { curr = 0; //重新循环播放 } myvideo.load(); myvideo.play(); } else { let url = vList[curr]; $("#videoView").hide(); $("#imgView").show(); $

android 视频播放

岁酱吖の 提交于 2019-12-29 04:43:19
今天是内容是给游戏添加一个视频,用于开场公司logo播放。 要求: 1.不要出现播放器那种 "开始","暂停" "快进""快退"等按钮。 2.播放完成后需要事件监听移除掉视频。 首先在android中播放视频默认支持3GP,MP4格式,如果你需要支持其他格式必须软解码其他格式文件。 因为我做的不是一个播放器只需要在游戏开头播放一下视频就行了,所以这里选用MP4格式。 然后API的选择有 MediaPlayer和VideoView 用MediaPlayer要自己编写响应的代码,如果你熟悉MediaPlayer只是稍微复杂一点而已。 用VideoView 是android已经封装好的View 它继承自SurfaceView并实现了MediaPlayerControl接口。 稍微想了下,毫不犹豫的选择了VideoView 。 首先要重写VideoView因为他默认不是全屏的,我需要全屏 package ss.ss;import android.content.Context;import android.util.AttributeSet;import android.widget.VideoView;public class MyVideoView extends VideoView {public static int WIDTH;public static int HEIGHT

Android VideoView播放视频

女生的网名这么多〃 提交于 2019-12-28 08:17:58
今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1、在界面布局中定义VideoView组件,或者在程序中创建VideoView组件。 2、调用VideoView的如下两个方法来加载指定视频:setVideoPath(String path)、setVideoURI(Uri uri)。 3、调用VideoView的start()、stop()、pause()方法来控制视频播放。 实际上与VideoView一起结合使用的还有一个MediaController类,它的作用是提供一个友好的图形控制界面,通过该界面来控制视频的播放。 下面就直接上个实例: 布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <!-- 定义VideoView播放视频 --> 8 <VideoView 9 android:id="@+id

使用VideoView播放视频

女生的网名这么多〃 提交于 2019-12-28 08:17:31
VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件。 既然是播放一段视频,那么不可避免的要涉及到一些开始、暂停、停止等操作,VideoView也为开发人员提供了对应的方法,这里简单介绍一些常用的: int getCurrentPosition():获取当前播放的位置。 int getDuration():获取当前播放视频的总长度。 isPlaying():当前VideoView是否在播放视频。 void pause():暂停 void seekTo(int msec):从第几毫秒开始播放。 void resume():重新播放。 void setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。 void setVideoURI(Uri uri):以Uri的方式设置VideoView播放的视频源,可以是网络Uri或本地Uri。 void start():开始播放。 void stopPlayback():停止播放。 setMediaController(MediaController controller):设置MediaController控制器。 setOnCompletionListener(MediaPlayer