Vitamio中文API文檔(5)—— MediaPlayer


 

聲明

歡迎轉載,但請保留文章原始出處:) 

Vitamio:http://www.vitamio.org

農民伯伯: http://www.cnblogs.com/over140/

 

正文 

MediaPlayer

整理:農民伯伯


類概述

public class MediaPlayer

MediaPlayer可控制播放音樂/視頻和網絡流。可以從VideoView找到使用這個類的方法。

這個類與android.media.MediaPlayer的作用大部分相同。請參閱開發者指南音頻和視頻使用MediaPlayer。



常量

public static final int MEDIA_ERROR_UNKNOWN

播放錯誤,未知錯誤。

常量值:0


public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK

播放錯誤(一般視頻播放比較慢或視頻本身有問題會引發)。

常量值:200


public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING

     視頻過於復雜,無法解碼:不能快速解碼幀。此時可能只能正常播放音頻。參見MediaPlayer.OnInfoListener。

常量值:700


public static final int MEDIA_INFO_BUFFERING_START

MediaPlayer暫停播放等待緩沖更多數據。

常量值:701


public static final int MEDIA_INFO_BUFFERING_END

MediaPlayer在緩沖完后繼續播放。

常量值:702


public static final int MEDIA_INFO_NOT_SEEKABLE

媒體不支持Seek,例如直播流。

常量值:801


public static final int MEDIA_INFO_DOWNLOAD_RATE_CHANGED

av_read_frame()的速度(KB/s)。

常量值:901


public static final int VIDEOQUALITY_LOW

視頻質量——流暢。

常量值:-16


public static final int VIDEOQUALITY_MEDIUM

視頻質量——普通。

常量值:0


public static final int VIDEOQUALITY_HIGH

視頻質量——高質。

常量值:16


public static final int SUBTITLE_INTERNAL

字幕顯示來自內置字幕。

常量值:0


public static final int SUBTITLE_EXTERNAL

字幕顯示來自外置字幕。

常量值:1


public static final String[] SUB_TYPES

Vitamio支持的外置字幕類型。

常量值:{ ".srt", ".ssa", ".smi", ".txt", ".sub", ".ass" }

 

公共方法

public static final boolean isLibraryLoaded()

     動態鏈接庫(so)是否已經成功加載完成。


public void setDisplay(SurfaceHolder sh)

設置用於顯示媒體視頻的SurfaceHolder。這個調用是可選的。只顯示音頻而不顯示視頻時不調用這個方法(例如后台播放)。

參數

sh 用戶顯示視頻的SurfaceHolder


public void setDataSource(Context context, Uri uri)

設置多媒體數據源,例如context Uri。(支持raw資源訪問,例如:android.resource://com.your.package/R.raw.your_resource_id)

參數

context 獲取ContentResolver時要使用的Context

uri 你要播放的uri

異常

IllegalArgumentException 狀態無效時引發(uri或context為空時引發)



public native void setDataSource(String path)

設置數據源(文件路徑或http/rtsp/mms URL)。


public native void setDataSource(FileDescriptor fd)

     設置數據源(FileDescriptor)。調用者在調用后要自行關閉FileDescriptor,最安全的做法是一返回就馬上關閉。


public native void prepare()

預處理播放器為播放做准備,方法是同步執行。

     設置完數據源和顯示的Surface后,你需要調用prepare()或prepareAsync()。對於文件,你可以直到媒體播放器准備播放時再調用prepare


public native void prepareAsync()

預處理播放器為播放做准備,方法是異步執行。

     設置完數據源和顯示的Surface后,你需要調用prepare()或prepareAsync()。對於流,你應該調用prepareAsync(),立即返回,而不是阻塞,直到足夠的數據被緩沖。


public void start()

開始或繼續播放。如果此前已暫停播放,那么就從暫停的地方播放。如果已經停止播放或還未開始播放,播放將從頭開始。


public void stop()

pause()相同


public void pause()

暫停播放。調用start()恢復。


public void setWakeMode(Context context, int mode)

設置MediaPlayer的底層電源管理。可以在MediaPlayer沒有通過SurfaceHolder 設置setDisplay播放時使用,從而使用高級別的setScreenOnWhilePlaying特性。

本方法在MediaPlayer訪問低級別電源管理控制設備電源時使用。參數是一個android.os.PowerManager喚醒組合標識。使用這個方法需要WAKE_LOCK權限。默認情況下不使用以保持設備喚醒播放。

參數

context

mode 設置PowerManger電源/鎖定模式


public void setScreenOnWhilePlaying(boolean screenOn)

控制是否使用附加SurfaceHolder保持屏幕高亮持續播放視頻。本方法可能優於使用setWakeMode,因為它不需要應用程序訪問底層喚醒鎖的權限。

參數

screenOn 設置true將保持屏幕高亮,反之允許它關閉。


public native int getVideoWidth()

獲取視頻寬度。

返回值

返回視頻的寬度,沒有視頻或寬度尚未確定時返回0。可以通過注冊OnVideoSizeChangedListener當寬度有效時獲得一個通知。


public native int getVideoHeight()

獲取視頻高度。

返回值

返回視頻的高度,沒有視頻或高度尚未確定時返回0。可以通過注冊OnVideoSizeChangedListener當高度有效時獲得一個通知。


public native boolean isPlaying()

檢測MediaPlayer是否正在播放。


public native void seekTo(long msec)

設置到指定時間位置播放。

參數

msec 從開始位置到msec的偏移量(以毫秒為單位)

異常

IllegalStateException 內部播放引擎未初始化引發


public native long getCurrentPosition()

獲取當前播放位置。


public native Bitmap getCurrentFrame()

獲取當前視頻幀。(可用於截圖)


public native long getDuration()

獲取多媒體播放持續時間。


public void release()

釋放與MediaPlayer相關的資源。當你使用完MediaPlayer完后調用此方法是一個好的編程習慣。


public void reset()

復位(reset)MediaPlayer至未初始化狀態。調用此方法后,你需要再次設置數據源,並通過prepare()來初始化。


public native void setVolume(float leftVolume, float rightVolume))

設置音量。(范圍0.0~1.0之間)


public void setOnPreparedListener(OnPreparedListener listener))

注冊一個回調函數,在視頻預處理完成后調用。

 

public void setOnCompletionListener(OnCompletionListener l)

注冊一個回調函數,視頻播放完成后調用。


public void setOnErrorListener(OnErrorListener l)

注冊一個回調函數,在異步操作調用過程中發生錯誤時調用。例如視頻打開失敗。


public void setOnBufferingUpdateListener(OnBufferingUpdateListener l)

注冊一個回調函數,在網絡視頻流緩沖變化時調用。


public void setOnSeekCompleteListener(OnSeekCompleteListener l)

注冊一個回調函數,在seek操作完成后調用。


public void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener)

注冊一個回調函數,在視頻大小已知或更新后調用。


public void setOnSubtitleUpdateListener(OnSubtitleUpdateListener l)

注冊一個回調函數,在字幕需要顯示時調用。


public void setOnInfoListener(OnInfoListener l)

     注冊一個回調函數,在有警告或錯誤信息時調用。例如:開始緩沖、緩沖結束、下載速度變化。


public void releaseDisplay()

在播放音頻的時候調用這個有效果。


public native float getVideoAspectRatio()

獲取視頻寬高比例。

返回值

返回視頻的寬高比。沒有視頻或者寬高不正確返回0。參見VideoView.setVideoLayout。


public native void setVideoQuality(int quality)

設置視頻質量。如果播放延遲比較嚴重,你可以嘗試使用VIDEOQUALITY_LOW(流暢),默認VIDEOQUALITY_LOW(流暢)。

參數

quality 參見MediaPlayer的常量:VIDEOQUALITY_LOW(流暢)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高質)。


public native void setDeinterlace(boolean deinterlace)

設置視頻反交錯。


public native void setBufferSize(int bufSize)

設置視頻緩沖大小。默認1024KB,單位byte


public native boolean isBuffering()

檢測是否緩沖完畢。


public native int getBufferProgress()

參見OnBufferingUpdateListener。


public native void setMetaEncoding(String encoding)

設置元數據編碼。例如:UTF-8


public native String getMetaEncoding()

獲取元數據編碼。


public HashMap<String, Integer> getAudioTrackMap(String encoding)

獲取視頻中嵌入的音軌。例如:English


public native int getAudioTrack()

設置播放音軌編號。

 

public native void setAudioTrack(int audioIndex)

設置音軌編號,必須使用getAudioTrackMap的返回值。


public void setInitialAudioTrack(int audioIndex)

設置初始化音軌。


public void setInitialSubTrack(int subIndex)

設置初始化字幕。


public native void setSubShown(boolean shown)

設置是否顯示字幕。

參數

shown true表示顯示字幕


public native void setSubEncoding(String encoding)

設置字幕編碼。

參數

encoding 字幕編碼。如果為null將自動檢測。


public native int getSubLocation()

獲取字幕位置類型。0為內嵌字幕,1為外掛字幕。


public native void setSubPath(String subPath)

設置外掛字幕路徑。必須是本地文件路徑。


public native String getSubPath()

獲取外掛字幕路徑。


public native void setSubTrack(int trackId)

設置字幕編號。必須是getSubTrackMap的返回值。


public native int getSubTrack()

獲取字幕編號。


public HashMap<String, Integer> getSubTrackMap(String encoding)

獲取視頻內嵌字幕集合。

參數

encoding 格式化字符串編碼。如果為null將自動檢測。

返回值

返回字幕名稱和字幕編號組成的Map。


受保護方法

protected void finalize()

調用了native_finalize。



MediaPlayer內部接口

整理:農民伯伯


public interface OnBufferingUpdateListener

void onBufferingUpdate(MediaPlayer mp, int percent)

更新流媒體緩存狀態。

參數

mp 要更新的MediaPlayer

percent 已緩沖的百分比數(0 ~ 100)



public interface OnErrorListener

boolean onError(MediaPlayer mp, int what, int extra)

錯誤信息。

參數

mp 錯誤相關的MediaPlayer

what 錯誤類型,參見MEDIA_ERROR_UNKNOWN、MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK

extra 額外具體的錯誤code。通常依賴於實現。

返回值

如果處理了錯誤返回true,否則返回false。返回false或沒有設置OnErrorListener將引發OnCompletionListener被調用。



public interface OnInfoListener

boolean onInfo(MediaPlayer mp, int what, int extra)

信息或警告。

參數

mp 信息相關的MediaPlayer

what 信息或警告類型,參見MEDIA_INFO_VIDEO_TRACK_LAGGING、MEDIA_INFO_BUFFERING_START、MEDIA_INFO_BUFFERING_END、MEDIA_INFO_NOT_SEEKABLE、MEDIA_INFO_DOWNLOAD_RATE_CHANGED

extra 額外具體的信息code。通常依賴於實現。

返回值

如果處理了錯誤返回true,否則返回false。返回false或沒有設置OnInfoListener將丟棄信息或警告。



public interface OnSubtitleUpdateListener

public void onSubtitleUpdate(String text)

需要顯示文字字幕。


public void onSubtitleUpdate(byte[] pixels, int width, int height)

需要顯示圖片字幕。

參數

pixels 圖片字幕像素

width 圖片字幕寬度

height 圖片字幕高度

 

 

~~~~~~~~~~~~~~ 

馬上要投入新的項目中,Vitamio的文檔恐怕得找時間在寫,歡迎給文檔反饋信息。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM