Android开发之MediaPlayer和SurfaceView播放视频

Android语言基础教程(190)Android多媒体应用播放音频与视频之使用MediaPlayer和SurfaceView播放视频:别再说Android视频开发难了!MediaPlayer+Sur 在当今的智能手机应用中,音视频播放功能已经成为不可或缺的一部分。无论是刷短视频、看在线课程还是听音乐,都离不开多媒体技术的支持。Android原生提供了对MP3、WAV、MP4和3GP等音频、视频格式支持的组件API,其中MediaPlayer和SurfaceView是两个最重要的核心类。本文将带你深入浅出地掌握如何使用这两者打造一个功能完善的视频播放器。 阅读详情

使用MediaPlayer出了了可以播放音频之外,还可以播放视频文件,只不过使用MediaPlayer播放视频时,没有提供图像输出界面。可以使用SurfaceView组件来显示视频图像。使用MediaPlayer和SurfaceView播放视频大致可以分为如下四个步骤:

1)定义SurfaceView组件。最好在布局文件中实现。

2)创建MediaPlayer对象,并为其加载要播放的视频。

3)将所播放的视频画面输出到SurfaceView中。使用MediaPlayer对象的setDisplay方法,可以将所播放的视频画面输出到SurfaceView。

4)调用MediaPlayer对象的相应方法控制视频的播放。播放play,暂停,pause,停止stop。

一个例子如下所示:




import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	private MediaPlayer mp;		//声明MediaPlayer对象
	private SurfaceView sv;	//声明SurfaceView对象
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mp=new MediaPlayer();		//实例化MediaPlayer对象
        sv=(SurfaceView)findViewById(R.id.surfaceView1);	//获取布局管理器中添加的SurfaceView组件
        Button play=(Button)findViewById(R.id.play);	//获取“播放”按钮
        final Button pause=(Button)findViewById(R.id.pause);	//获取“暂停/继续”按钮
        Button stop=(Button)findViewById(R.id.stop);		//获取“停止”按钮
        //为“播放”按钮添加单击事件监听器
        play.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				mp.reset();		//重置MediaPlayer对象
				try {
					mp.setDataSource("/sdcard/ccc.mp4");	//设置要播放的视频
					mp.setDisplay(sv.getHolder());	//设置将视频画面输出到SurfaceView
					mp.prepare();	//预加载视频
					mp.start();	//开始播放
					sv.setBackgroundResource(R.drawable.bg_playing);	//改变SurfaceView的背景图片
					pause.setText("暂停");
					pause.setEnabled(true);	//设置“暂停”按钮可用
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (SecurityException e) {
					e.printStackTrace();
				} catch (IllegalStateException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
				
			}
			
		});
        //为“停止”按钮添加单击事件监听器
        stop.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				if(mp.isPlaying()){
					mp.stop();		//停止播放
					sv.setBackgroundResource(R.drawable.bg_finish);	//改变SurfaceView的背景图片
					pause.setEnabled(false);	//设置“暂停”按钮不可用
				}
			}
			

		});
        //为“暂停”按钮添加单击事件监听器
        pause.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(mp.isPlaying()){
					mp.pause();		//暂停视频的播放
					((Button)v).setText("继续");
				}else{
					mp.start();		//继续视频的播放
					((Button)v).setText("暂停");
				}
			}
			

		});
        //为MediaPlayer对象添加完成事件监听器
        mp.setOnCompletionListener(new OnCompletionListener() {

			public void onCompletion(MediaPlayer mp) {
				// TODO Auto-generated method stub
				sv.setBackgroundResource(R.drawable.bg_finish);	//改变SurfaceView的背景图片
				Toast.makeText(MainActivity.this, "视频播放完毕!", Toast.LENGTH_SHORT).show();
			}
			
 
		});
        
    }
	@Override
	protected void onDestroy() {
		if(mp.isPlaying()){
			mp.stop();	//停止播放视频
		}
		mp.release();	//释放资源
		super.onDestroy();
	}
    
}

好了,结束。



安卓开发:弹出自定义对话框自动播放视频(仿视频广告效果,使用mediaplayer和surfaceview做播放器) 本文为原创,转载请说明出处,谢谢~ 阅读详情

相关推荐

Android MediaPlayer+SurfaceView+自定义控制器实现视频播放

VideoView继承了SurfaceView同时实现了MediaPlayerControl接口,MediaController则是安卓封装的辅助控制器,带有暂停,播放,停止,进度条等控件。本demo基于Android11开发,实现了简单的视频播放功能,可以拖动进度条,快进/快退和播放上一个视频/播放下一个视频,同时通过悬浮窗的形式查看视频详情。5、将展示视频详情的布局及组件初始化,创建WindowManager对象并设置窗口对应的值,将设置好的值和布局添加进WindowManager对象。

qnako的博客 4519

MediaPlay+SurfaceView实现播放视频

功能SurfaceHolder是一个接口,类似一个Surface的监听器。有三个回调方法来监听Surface的创建、销毁、改变。

A125679880的博客 781

Android开发中MediaPlayer与SurfaceView结合实现高效视频播放

在Android平台的多媒体开发中,与是构建视频播放功能的核心组件。负责音视频的解码与播放控制,而则专注于高效的视频画面渲染。二者结合,能够实现流畅、低延迟的视频播放体验。本章将从基础概念入手,深入解析的工作流程与的绘制机制,帮助开发者理解其在Android图形系统中的角色与协同方式,为后续实战开发奠定扎实的理论基础。本章详细介绍了Android中视频资源的三种主要加载方式:本地文件路径、应用资源文件(R.raw与assets)、网络流媒体URL。

weixin_35294091的博客 940

MediaPlayer+SurfaceView实现视频播放器

我这个人走得很慢,但是我从不后退。 之前给大家分享过使用MediaController类实现视频播放器,今天呢给大家分享可以自定义的视频播放器,那就是使用MediaPlayer+SurfaceView来实现。废话不多说,直接上代码。 目录1. 设计思路2. 设计布局3. 实现逻辑4. 权限获取5. Demo展示 1. 设计思路 使用 MediaPlayer+SurfaceView实现视频播放器的流程如图所示,在学习音视频播放器的时候,一个老师画的图,在此直接借用。 2. 设计布局 <?xml v.

小曾同学的博客 2382

Android移动开发-使用MediaPlayer和SurfaceView播放视频的实现

使用VideoView播放视频简单、方便,但有些早期的开发者还是更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放的图像输出。 使用MediaPlayer播放视频的步骤如下: Step1:创建MediaPlayer对象,并让它加载指定的视频文件; Step2:在界面布局文件中定义SurfaceView控件,或在程序中创建SurfaceView控件,并为SurfaceView的SurfaceHolder添加Callback监听器; Step3:调用MediaPlayer对象的setDisney(SurfaceHolder sh)方法将所播放的视频图像输出到指定的SurfaceView控制; Step4:调用MediaPlayer的start()、stop()、pause()方法来控制视频播放。

使用MediaPlayer和SurfaceView播放视频

介绍了使用MediaPlayer播放音频,实际上,MediaPlayer还可以用来播放视频文件,只不过使用MediaPlayer播放视频时,没有提供图像输出界面。这时,可以使用SurfaceView组件来显示视频图像。使用MediaPlayer和SurfaceView播放视频....

Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频

1.MediaPlayer除了可以播放音乐外,还可以播放视频,但是使用MediaPlayer播放音乐时,没有提供图像输出界面,可以使用SurfaceView组件来显示视频画面,首先,必须在布局文件activity_main.xml文件中定义SurfaceView组件,第二步就是创建MediaPlayer对象,加载要播放的视频,第三步就是将所要播放的视频画面输出到SurfaceView,使用Medi

茕夜 2626

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

本文提供了一份详细的GMT6.1绘制地形起伏图的保姆级教程,从环境搭建到数据下载,再到核心绘图命令解析,帮助用户避开常见错误。特别适合科研人员和地理信息爱好者快速掌握专业地形图的绘制技巧,提升工作效率。

weixin_42549723的博客 278

Android SurfaceView + MediaPlayer实现视频播放器

什么是SurfaceView 请参考,非常详细 参考博客实现功能:实现一个可拖拽,可暂停的视频播放控件。步骤总结:创建一个拖拽条:skbProgress = (SeekBar) this.findViewById(R.id.skbProgress); skbProgress.setOnSeekBarChangeListener(new SeekBarChangeEvent());SeekBarCha

Mr.LongFace Blog 2186

vscode远程开发-调试模式下attach远程进程提示管理员权限失败的问题

vscode 远程开发 附加进程

comhaqs的专栏 2879

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 429

android开发SurfaceView+MediaPlayer实现视频播放

之前一直使用listview实现城市列表与字母联动,于是想着通过recycleView实现效果,但是发现和listView不一样,最后查资料资料发现有另外方法,特此记录一下 1,移动位置小于第一Item; 2,移动位置小于等于最后一个Item 3,其他情况 /** * 根据位置recycleView移动到的位置 * * @param pos recycleVi

WhatYouSeeMe的博客 520

Xilinx_JESD204B

Xilinx_JESD204B_AXI配置 说明:通过FPGA的高速数据接口JESD204B对AD9625进行高速采集。 环境:Vivado2018.3。 IP核:JESD204(7.2)。 参考手册:pg066_jesd204 v7.2。 资料以及IP_licence:JESD204B AXI协议资料:AXI 文章目录JESD204B概述JESD204B接口术语JESD204B 层JESD204B_AXI介绍AXI介绍JESD204B__AXI_Lite接口AXI-Lite接口介绍AXI-Lite接口信号

Crazzy_M的博客 1万+

android开发笔记之多媒体—MediaPlayer + SurfaceView播放视频

前面我们讲了用VideoView来播放视频,这里再介绍一种方式: MediaPlayer + SurfaceView 来播放视频,我们都知道: MediaPlayer 是用来播放音频的 SurfaceView 是用来绘制界面的 所以这里介绍它们结合起来就能播放视频了,话不...

chenghunpeng8091的博客 201

esp8266步进电机驱动控制

blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) Arduino uno的板子的程序 esp8266板子接入到Arduino uno的控制引脚上的5,6,7 esp8266程序 //****库***** #define BLINKER_WIFI //官方wifi协议库 #define BLINKER_PRINT Serial //串口协议库 #include <Blinker.h&gt

perseverance51博客 2855

msfvenom制作windows/linux/android/ios木马

msfvenom选项如下 -p, --payload<payload> 指定 payload(攻击荷载)。如果使用自定义payload,请使用'-'或者stdin指定。 -l, --list [module_typel列出指定模块的所有可用资源。模块类型包括:payloads, encoders, nops, all -n, --nopsled <length>为payload预先指定一个NOP滑动长度。 -f, --format <format>指定输出格式(使

Cwillchris的博客 2734

Android开发使用SurfaceView和Mediaplayer播放网络视频(功能齐全)

本篇播客主要说明如何使用SurfaceView和Mediaplayer来播放网络视频。支持视频格式:实测支持的有mp3、mp4、rmvb、avi、3gp、flv……。带有功能:播放、暂停、视频拖动,播放时长显示、全屏、恢复全屏、双击暂停/播放功能、保存播放记录继续播放等等。界面运行效果如下:主要代码如下:1、activity_mainvideo.xml的内容如下:&lt;LinearLayout ...

lpCrazyBoy的博客 7754

小众但实用:Python爬取钉钉/企业微信消息,实现办公数据自动化采集(完整版)

钉钉/企业微信的办公数据自动化采集,属于「小众但极度实用」的Python技巧——它不像爬虫爬取电商/网页数据那样被广泛关注,但能直接解决职场人的「刚需痛点」,把每天1-2小时的手动数据整理工作,变成「一键自动化完成」。这套技巧的核心价值,不在于「技术有多高深」,而在于「能真正落地、能真正提升效率」—— 几行简单的Python代码,就能解放双手,让你从繁琐的重复工作中解脱出来,专注于更有价值的核心工作。更重要的是:所有的技术和代码,都是基于「合规合法」的前提,守住了技术的底线,也守住了职场的原则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1931

Android开发之MediaPlayer和SurfaceView组成视频播放器

SurfaceView  使用双缓冲技术 是个重量级的组件 只要不可见,就不会创建,可见时,才会创建 只要不可见,就会销毁  SurfaceView一旦不可见,就会被销毁,一旦可见,就会被创建,销毁时停止播放,再次创建时再开始播放   1 import android.app.Activity; 2 import android.media.MediaPlayer;...

weixin_33924220的博客 86

06 - 深度学习处理器原理

深度学习处理器的重要性在于它们可以加速深度学习任务的执行,从而推动了人工智能的发展。传统的通用处理器虽然可以执行深度学习任务,但它们不够高效,需要消耗大量的能量和时间。深度学习处理器通过硬件加速和特定设计来优化深度学习任务的执行,从而可以提高执行效率、降低能耗和加速训练和推断过程。 深度学习处理器的发展也推动了深度学习算法的创新,因为算法的发展需要硬件的支持和驱动。同时,深度学习处理器的出现也促进了更广泛的应用场景,包括自动驾驶、人脸识别、语音识别、图像识别等领域。因此,深度学习处理器的重要性不仅在于加速

m0_51339444的博客 752

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android多媒体功能开发(9)——使用SurfaceView控件+MediaPlayer类播放视频

使用SurfaceView控件+MediaPlayer类播放视频的主要原理是把MediaPlayer对象的显示控件设置为SurfaceView对象。播放控制都是针对MediaPlayer对象,用法与播放音频相同。

nanoage的博客 2928

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android_利用SurfaceView + MediaPlayer开发最简单的播放器

public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { private SurfaceView mSurfaceView;//展示 视频的 private SurfaceHolder mHolder;// private SeekBar mSeekBar;

qq_37948746的博客 724

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android mediaplayer截图,Android开发使用SurfaceView和Mediaplayer播放网络视频(功能齐全)...

【实例简介】支持视频格式:实测支持的有mp3、mp4、rmvb、avi、3gp、flv……。带有功能:播放、暂停、视频拖动,播放时长显示、全屏、恢复全屏、双击暂停/播放功能、保存播放记录继续播放等等。相应的播客网址:https://blog.youkuaiyun.com/lpCrazyBoy/article/details/79842906【实例截图】【核心代码】SurfaceViewAndMediaplay...

weixin_42522045的博客 407

Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器

利用android SDK 提供的接口 开发最简单的视频播放demo。 接下来贴出main.xml的源码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:la

tx3344 9516
上一篇: Android开发之播放器中涉及的Surface,SurfaceView,SurfaceHolder基础
下一篇: Android开发之Mediaplayer
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值