1. 程式人生 > >Android開源播放框架vitamio的介紹

Android開源播放框架vitamio的介紹

Android開源播放框架Vitamio的介紹

Vitamio 是一款 Android 與 iOS 平臺上的全能多媒體開發框架,全面支援硬體解碼與 GPU 渲染。Vitamio能夠流暢播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常見格式的視訊,還可以在Android 與 iOS 上跨平臺支援 MMS, RTSP, RTMP, HLS(m3u8) 等常見的多種視訊流媒體協議,包括點播與直播。那麼今天,就給大家介紹一下Vitamio框架。

這篇文章主要是簡單的給大家介紹Vitamio及最基本的使用,廢話不多說,直接先上圖:

這裡寫圖片描述

好了,咱們就來一步一步實現這樣的一個視訊播放列子。

下載Vitamio依賴並匯入Android Studio

首先到官網去下載Vitamio的android版本依賴庫及Demo,下載下來的檔案如下圖:

這裡寫圖片描述

接下來開啟as新建一個專案,並將下載好的依賴庫匯入。然後給該應用新增依賴,圖如下:

這裡寫圖片描述
這裡寫圖片描述

準備工作做完後,接下來就是開始我們的程式碼了。

Vitamio中VideoView的介紹

  • 類概述

public class VideoView extends SurfaceView implements MediaController.MediaPlayerControl
用於播放視訊檔案。VideoView可以載入各種來源的影象(如資源或ContentProvider),注意計算視訊尺寸,以便在任意佈局管理器中使用,它還提供了諸如縮放等顯示選項。
VideoView也提供封裝了許多MediaPlayer的方法,例如getVideoWidth、setSubShown。

  • 常量

public static final int VIDEO_LAYOUT_ORIGIN
縮放參數,原始畫面大小。
常量值:0

public static final int VIDEO_LAYOUT_SCALE
縮放參數,畫面全屏。
常量值:1

public static final int VIDEO_LAYOUT_STRETCH
縮放參數,畫面拉伸。
常量值:2

public static final int VIDEO_LAYOUT_ZOOM
縮放參數,畫面裁剪。
常量值:3

  • 公共方法

public void setVideoLayout(int layout, float aspectRatio)


設定視訊的佈局。
引數
layout 縮放參數
aspectRation 寬高比,為0將自動檢測。

public boolean isValid()
Surface是否有效。 參見Surface的isValid方法。

public void setVideoPath(String path)
設定視訊路徑。

public void setVideoURI(Uri uri)
設定視訊URI。(可以是網路視訊地址)

public void stopPlayback()
停止視訊播放,並釋放資源。

public void setMediaController(MediaController controller)
設定媒體控制器。
引數
controller 媒體控制器,注意是io.vov.vitamio.widget.MediaController。

public void setOnPreparedListener(OnPreparedListener l)
註冊一個回撥函式,在視訊預處理完成後呼叫。在視訊預處理完成後被呼叫。此時視訊的寬度、高度、寬高比資訊已經獲取到,此時可呼叫seekTo讓視訊從指定位置開始播放。

public void setOnCompletionListener(OnCompletionListener l)
註冊一個回撥函式,視訊播放完成後呼叫。

public void setOnErrorListener(OnErrorListener l)
註冊一個回撥函式,在非同步操作呼叫過程中發生錯誤時呼叫。例如視訊開啟失敗。

public void setOnBufferingUpdateListener(OnBufferingUpdateListener l)
註冊一個回撥函式,在網路視訊流緩衝變化時呼叫。

public void setOnSeekCompleteListener(OnSeekCompleteListener l)
註冊一個回撥函式,在seek操作完成後呼叫。

public void setOnSubtitleUpdateListener(OnSubtitleUpdateListener l)
註冊一個回撥函式,在字幕需要顯示時呼叫。

public void setOnInfoListener(OnInfoListener l)
註冊一個回撥函式,在有警告或錯誤資訊時呼叫。例如:開始緩衝、緩衝結束、下載速度變化。

public boolean onTouchEvent(MotionEvent ev)
處理顯示/隱藏MediaController。

public void start()
開始播放。

public void pause()
暫停播放。

public void suspend()
掛起(暫時沒有實現功能)

public void resume()
恢復播放。

public long getDuration()
獲取視訊播放時長。

public long getCurrentPosition()
獲取當前播放位置。

public void seekTo(long msec)
設定播放位置。
引數
msec 位置

public boolean isPlaying()
是否正在播放。

public int getBufferPercentage()
獲取緩衝百分比。

public void setVolume(float leftVolume, float rightVolume)
設定音量。
引數
leftVolume 左聲道
rightVolume 右聲道

public int getVideoWidth()
獲取視訊寬度。

public int getVideoHeight()
獲取視訊高度。

public float getVideoAspectRatio()
設定視訊寬高比例。沒有視訊或者寬高不正確返回0。

public void setVideoQuality(int quality)
設定視訊質量。
引數
quality 參見MediaPlayer的常量:VIDEOQUALITY_LOW(流暢)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高質)。

public void setBufferSize(int bufSize)
設定視訊緩衝大小(預設1024KB)單位Byte。

public boolean isBuffering()
檢測是否緩衝完畢。

public void setMetaEncoding(String encoding)
設定元資料編碼。例如:UTF-8

public String getMetaEncoding()
獲取元資料編碼。

public HashMap getAudioTrackMap(String encoding)
獲取視訊中嵌入的音軌。例如:English

public int getAudioTrack()
設定播放音軌編號。

public void setAudioTrack(int audioIndex)
設定音軌編號,必須使用getAudioTrackMap的返回值。

public void setSubShown(boolean shown)
設定是否顯示字幕。
引數
shown true表示顯示字幕

public void setSubEncoding(String encoding)
設定字幕編碼。
引數
encoding 字幕編碼。如果為null將自動檢測。

public int getSubLocation()
獲取字幕位置型別。0為內嵌字幕,1為外掛字幕。

public void setSubPath(String subPath)
設定外掛字幕路徑。必須是本地檔案路徑。

public String getSubPath()
獲取外掛字幕路徑。

public void setSubTrack(int trackId)
設定字幕編號。必須是getSubTrackMap的返回值。

public int getSubTrack()
獲取字幕編號。

public HashMap getSubTrackMap(String encoding)
獲取視訊內嵌字幕集合。
引數
encoding 格式化字串編碼。如果為null將自動檢測。
返回值
返回字幕名稱和字幕編號組成的Map。

public boolean canPause()
是否可暫停。(暫時沒有實現功能)

public boolean canSeekBackward()
(暫時沒有實現功能)

public boolean canSeekForward()
(暫時沒有實現功能)

以上是關於Vitamio SDK 5.0.2 中一些常用的方法,粗體部分常用的方法,在下篇封裝自己的播放器文章中,將會頻繁的使用到上面的一些方法。

佈局檔案中定義Vitamio中的VideoView

程式碼如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="com.hc.myvitamioplayer.MainActivity">

    <io.vov.vitamio.widget.VideoView
        android:id="@+id/vw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</RelativeLayout>

使用Vitamio中的VideoView進行網路視訊播放

  • 初始化Vitamio
    在佈局定義前需要先初始化Vitamio
 Vitamio.isInitialized(getApplicationContext());
  • 獲取到VideoView控制元件
mVideoView = (VideoView) findViewById(R.id.vw);
  • 設定視訊播放路徑
mVideoView.setVideoPath("http://192.168.68.101:8888/haha.mp4");
  • 開始播放
mVideoView.start();
  • 在清單檔案中新增訪問網路的許可權
<uses-permission android:name="android.permission.INTERNET" />

這就是簡單的介紹了下vitamio的使用,vitamio官網:https://www.vitamio.org/。下篇文章將給大家介紹通過vitamio提供的SDK封裝屬於自己的網路視訊播放器。大約實現了視訊的播放、快進快退、全屏切換、調節音量、調節視訊亮度、暫停播放、視訊快取等的功能。先給大家看看效果圖。

快進快退效果圖

這裡寫圖片描述

全屏切換效果圖:

這裡寫圖片描述

調節音量效果圖 :

這裡寫圖片描述

調節視訊亮度(在模擬器中美效果)、暫停播放效果圖:

這裡寫圖片描述

視訊快取效果圖:

這裡寫圖片描述

今天就到這裡了,期待我的下一篇文章吧,(●’◡’●)