[android,16]android 視頻播放器

來源:互聯網
上載者:User

視頻播放器的開發:

 

一、顯示視頻的控制項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://>

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.