Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [android,16]android 視頻播放器

[android,16]android 視頻播放器

編輯:關於Android編程

視頻播放器的開發:

 

一、顯示視頻的控件SurfaceView:

1、主要完成單位時間內的顯示。

2、內部使用雙緩沖機制:

3、直接操作顯卡的顯存,速度較快。

 

 

二、視屏播放開發的具體步驟:

1、化布局界面:

 

android:layout_width="fill_parent"

>

android:orientation="vertical" >

 

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

android:textSize="20sp" />

 

android:id="@+id/et_path"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

 

 

 

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:orientation="horizontal" >

 

android:id="@+id/play"

android:layout_width="0dip"

>

android:layout_weight="1"

android:text="播放" />

 

android:id="@+id/pause"

android:layout_width="0dip"

android:layout_height="wrap_content"

>

android:text="暫停" />

 

android:id="@+id/replay"

android:layout_width="0dip"

android:layout_height="wrap_content"

android:layout_weight="1"

>

 

android:id="@+id/stop"

android:layout_width="0dip"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="停止" />

 

//顯示視頻的控件:

android:id="@+id/sv"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

 

 

2、視頻播放器的 各種操作:

①、播放:
 

MediaPlayer>

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//獲取SurfaceView對象:

SurfaceView>

//通過SurfaceView 獲取SurfaceHolder 對象

SurfaceHolder>

//指定播放的視頻顯示到那個控件裡面

mediaPlayer.setDisplay(holder);

//設置播放資源的路徑, 如:/sdcard/oppo.3gp

mediaPlayer.setDataSource(path);

//初始化播放器:

方式一:同步的:

mediaPlayer.prepare();

方式二:異步的:

mediaPlayer.prepareAsync();// 異步的准備

//設置異步准備完成的監聽器 ,當異步准備完成後調用裡面的方法:

mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

 

public>

>

>

>

 

>

>

}

 

③、停止:

private>

//獲取當前播放的位置

>

>

>

>

//通過SurfaceView 獲取SurfaceHolder 對象

SurfaceHolder>

//指定播放的視頻顯示到那個控件裡面

mediaPlayer.setDisplay(holder);

②、解決方法:要為SurfaceHolder對象設置回調函數:

Surfaceview>

//設置SurfaceHolder 的回調方法;

sv.getHolder().addCallback(new Callback() {

 

//當SurfaceHolder被銷毀的時候調用該方法:

>

mediaplater.reset(); //回到Idle狀態

 

 

2. 使用setDataSource(); 設置播放的數據源

 

3. 底層的c代碼初始化播放器

方式一:mediaplayer.prepare();

同步的方法.

如果沒有准備完畢 不會執行下面的代碼

mediaplayer.start();

 

方式二:mediaplayer.prepareAsync();

異步的方法,

要想知道什麼時候准備完畢需要注冊onPreparedListener的監聽事件,在准備完畢後會調用內部的onPrepared()方法:

在onPrepared()方法裡面完成視頻的播放.

 

五、播放在線的視頻文件:

1、如果我們想在線的播放一個流媒體資源:

要求一定是一個支持漸進式下載的資源文件,就是視頻分為若干個幀的資源,每一個幀都是一個可以被獨立播放的畫面。

2、支持漸進式下載的資源:

3gp 格式的支持http://協議下載

rtsp://>

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved