Android多媒体之VideoView视频播放器

本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下

1)、SurfaceView
在布局文件中

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_media_play" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.zking.android_contentresolve.MediaPlayActivity"> <SurfaceView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/sv_media_surface" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <SeekBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/seekBar" android:layout_weight="1" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="isPlayOrPause" /> </LinearLayout> </LinearLayout>

在Activity里面和播放内存卡上音乐的代码差不多,只是视频多了个显示内容,关键代码就是这三条

//播放内存上的视频 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //准备(内存卡) mediaPlayer.prepare(); //将媒体播放器捕捉的画面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder());

但是没看前面博客的筒子可能会觉得看不懂,所以还是把完整的代码粘贴出来

public class MediaPlayActivity extends AppCompatActivity { private SeekBar seekBar; private MediaPlayer mediaPlayer; private SurfaceView sv_media_surface; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_media_play); seekBar = (SeekBar) findViewById(R.id.seekBar); sv_media_surface = (SurfaceView) findViewById(R.id.sv_media_surface); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取拖动结束后的位置 int progress=seekBar.getProgress(); //跳转到某个位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){//代表第一次播放音乐 //播放内存卡内的音频 mediaPlayer=new MediaPlayer(); //设置类型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //设置音源 try { //播放内存上的视频 mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Movies/sister.mp4")); //准备(内存卡) mediaPlayer.prepare(); //将媒体播放器捕捉的画面展示在SurfaceView 上 mediaPlayer.setDisplay(sv_media_surface.getHolder()); //必须在播放前加载音频文件(异步准备) // mediaPlayer.prepareAsync(); } catch (IOException e) { e.printStackTrace(); } mediaPlayer.start(); //把图标改成暂停的图标(这里的暂停图标就是播放时的状态) imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int duration=mediaPlayer.getDuration(); //设置进度条的最大值为音乐的总时长 seekBar.setMax(duration); new MyThread(); }else if(mediaPlayer.isPlaying()){//正在播放音乐 mediaPlayer.pause(); //把图标改成播放的图标(暂停状态) imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class MyThread extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()<seekBar.getMax()){ //获取当前音乐播放的位置 int currentPosition=mediaPlayer.getCurrentPosition(); //让进度条跟着时间走 seekBar.setProgress(currentPosition); } } } }

2)、VideoView,如果在项目中,仅仅只是播放视频的话,这种方式会比较简单,但是如果是要做视频播放器的话,还是使用第一种方法

布局文件

<VideoView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vv_main_vedio" />

Activity

public class VedioActivity extends AppCompatActivity { private VideoView vv_main_vedio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vedio); vv_main_vedio = (VideoView) findViewById(R.id.vv_main_vedio); //给videoView设置播放来源 vv_main_vedio.setVideoPath("file://mnt/sdcard/Movies/sister.mp4"); //实例化媒体控制器 MediaController mediaController=new MediaController(this); //给activity_vedio设置控制器 vv_main_vedio.setMediaController(mediaController); mediaController.setMediaPlayer(vv_main_vedio); } }

VideoView通过与MediaController类结合使用,开发者可以不用自己控制播放与暂停。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-07-31 00:13:28

Android多媒体之VideoView视频播放器的相关文章

android开发-Android 如何实现在线视频播放器并缓存本地,下次没有联网的情况,可离线播放缓存

问题描述 Android 如何实现在线视频播放器并缓存本地,下次没有联网的情况,可离线播放缓存 Android 如何实现在线视频播放器并缓存本地,下次没有联网的情况,可离线播放缓存 解决方案 android中如何实现离线缓存android中如何实现离线缓存android中如何实现离线缓存 解决方案二: http://www.cnblogs.com/doorsky/p/3218043.html 你可以参考一下

在Android本地视频播放器开发

  在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获取到视频后,那么接下来就是解码视频,解码视频我使用的是ffmpeg,所以这张就是使用NDK编译手机可以使用的FFmpeg库. NDK=/opt/android-ndk-r8d PLATFORM=$NDK/platforms/android-8/arch-arm/ PREBUILT=$NDK/to

界面-请教一下,android视频播放器操作菜单的实现思路

问题描述 请教一下,android视频播放器操作菜单的实现思路 在做一个简单的android视频播放器练手,使用的MediaPlayer+SurfaceView.现在实现了播放,在着手于播放时的操作界面. 实现目标就是很常见的那种,点击一下视频,就会浮现在正在播放的视频上面,两秒木有操作自动隐藏. 我能想到的就是放在fragment里,然后监听SurfaceView的点击情况,来控制fragment的显示和隐藏. 请教各位指点我这个思路有没有缺陷,或者有没有其他更好的思路.谢谢 解决方案 网上有

android多媒体音乐(MediaPlayer)播放器制作代码

本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下. 首先,在AndroidManifest.xml中配置权限 <!-- 读取手机中的音乐 -->    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  注释:Android多媒体音乐的几种来源 1. 在andriod的应用中 2     MediaPlayer.crea

android源代码视频播放器

问题描述 android源代码视频播放器 android源码视频播放器的起始类是哪一个?哪位大神能帮我分析一下视频播放器到源码呀? 解决方案 Android视频播放器Android视频播放器android视频播放器 解决方案二: 你找到AndroidManifest这个文件 找到这个标志 那么包含这个标志的Activity就是这个视频播放器APP的入口了

Android中使用Vitamio插件开发视频播放器,怎么实现清晰度切换

问题描述 Android中使用Vitamio插件开发视频播放器,怎么实现清晰度切换 项目中需要使用到流畅,普通,高清的切换,但是我每次切换时重新给了地址,使用SeekTo就没有用,还是重头开始播放,如果我只改变视频质量感觉清晰度没有怎么改变,请问这个视频质量的切换时怎么实现的啊?而且在Vitamio中的SeekTo好像不起作用.

Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现

本文给大家分享Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现,具体代码如下所示: import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import andro

视频播放器

做一款属于自己的视频播放器 android自带了的控件VideoView可以实现视频的播放,但是问题比较多. 我在网上看了好多,看到一个叫vitamio的第三方sdk还不错,使用起来也简单: Vitamio API for Android: VideoView 类概述  public class VideoView extends SurfaceView implements MediaController.MediaPlayerControl 用于播放视频文件.VideoView可以加载各种来

视频播放器用mediaplayer,在使用GestureDetector的onFling没办法判断滑动时间。

问题描述 视频播放器用mediaplayer,在使用GestureDetector的onFling没办法判断滑动时间. 源码附上 package com.example.demo0325; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; impor