Android mediaplayer_vadio视频
来源:互联网 发布:凸优化中科大 编辑:程序博客网 时间:2024/05/29 13:54
MainActivity .class
package cn.bgs.mediaplayer_vadio;
import java.io.File;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore.Audio.Media;
import android.app.Activity;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
/**
* SurfaceView->小游戏;自定义视频播放器;自定义相机(扫描二维码);
* SurfaceView与View区别->surfaceView可以局部刷新;效率高于View
* SurfaceHolder->SurfaceView下媒体空间->播放前载入媒体
* 原生支持视频格式:mp4,直播流:rtsp(占用资源大)
* 主流视频格式:直播流:m3u8(优酷);flash(webview播放)->维他蜜(vetamio);ffement
* */
public class MainActivity extends Activity implements Callback, OnClickListener {
private Button mBtn;
private SurfaceView mSf;
private SurfaceHolder holder;
private MediaPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
player=new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
mBtn=(Button) findViewById(R.id.mBtn);
mSf=(SurfaceView) findViewById(R.id.mSf);
mSf.setKeepScreenOn(true);//播放的时候设置屏幕长亮
holder=mSf.getHolder();//获取holder的对象
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//holder的回调监听
holder.addCallback(this);
mBtn.setOnClickListener(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Toast.makeText(MainActivity.this, "视频准备完毕", 0).show();
player.setDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void onClick(View v) {
try {
File file=new File(Environment.getExternalStorageDirectory(), "aa.3gp");
//给播放器设置播放资源
player.setDataSource(file.getAbsolutePath());
//player.setDataSource(MainActivity.this,Uri.parse("http://tj-ctfs.ftn.qq.com/ftn_handler/a146cf137b16a6e73e7e864a5d1219169834ed82e97318dd07c1b67df12b89cf6ed29eb593386867bf98d1b1a77697a9ada6e57bbfa21a8f09732ef2913d8fca/?fname=aa.3gp&k=0365653532e5bbc909e06f70146557190e505551065c5453155c510d064851500c0048570607501b08555007060352555c53520732636557594b5652426558&fr=00&&txf_fid=a0af8ead9f85f0333550585dc54f7e541f56f09c&xffz=2195456"));
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
player.start();
}
});
player.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//程序退出时播放停止
player.stop();
}
}
XML
activity_main.XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/mBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="播放"
/>
<SurfaceView
android:id="@+id/mSf"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
阅读全文
0 0
- Android mediaplayer_vadio视频
- Android 视频
- Android视频
- android 视频录制,视频拼接
- Android音视频-视频基础
- android视频播放
- 关于android视频解码
- Android 视频播放
- Android视频采集
- Android视频采集
- android 视频流采集
- Android视频开发浅析
- Android显示视频Demo
- Android视频采集
- Android视频监控方案
- android 视频流采集
- Android 视频录制
- Android视频采集
- 逆时针运动
- java必备
- Leetcode ArrayNesting(第一周作业)
- rfc2616
- Java虚拟机架构——来自《Java虚拟机实战》的笔记
- Android mediaplayer_vadio视频
- 【 D3.js 视频系列 】 飞速入门
- Android studio卡顿问题
- 【登录异常解决】Ubuntu 输入正确的密码后重新返回到登陆界面
- mysql5.7设置默认编码
- LeetCode 39. Combination Sum
- LogCat日志不显示
- BZOJ 1067 降雨量 (线段树)
- webrtc详细介绍