Android項(xiàng)目之a(chǎn)ndroid SDK視頻播放與vitamio視頻播放

尊重原創(chuàng),轉(zhuǎn)載請注明:From zsml2016(http://blog.csdn.net/qq_29269233)Power byzsml2016侵權(quán)必究!

前言:
今天我想給大家分享Android的視頻播放!如今我又想起了當(dāng)初我做的那個項(xiàng)目,那是接我姐夫單做的,不是很大的項(xiàng)目,我用了差不多半個月的時(shí)間完成了需求,現(xiàn)在回想起來真的不夠完美,覺得虧待了我姐夫,保證下次做好點(diǎn)!!!為啥這樣說呢?沒錯,就是視頻播放這一塊沒做完美,當(dāng)時(shí)的需求是要連接一個網(wǎng)絡(luò)視頻用來做空閑時(shí)播放的廣告,視頻是flv格式了,我當(dāng)時(shí)沒做過支持flv格式的播放器,以為大同小異完全沒問題,后來的后來我錯了,還不停地找百度找谷歌,搜索怎樣才能支持flv格式播放,網(wǎng)上的教程真是亂七八糟,都過時(shí)了,谷歌在Android4.x起就停止和Flash合作了,網(wǎng)上那些方法根本行不通,后來我只能用Android sdk做播放器了,于是就跟我姐夫說了 我只做了支持MP4、3GP格式的播放器了,到時(shí)要把廣告的格式改為MP4、3GP!!!后來也忘了什么時(shí)候讓我知道vitamio的存在,后來想了想其實(shí)用vitamio做播放挺好的。現(xiàn)在大家有沒有覺得我又笨又坑啊!好吧,為了彌補(bǔ)我的不足,接下來,就讓超哥教大家如何打造自己的萬能播放器吧!!!

一、首先讓大家知道Android sdk原生的視頻控件與vitamio的區(qū)別:
android sdk對視頻的支持:
本地:支持3gp ,mp4,avi(支持播放出聲音)網(wǎng)絡(luò):支持3gp ,mp4
vitamio對視頻的支持:
本地:支持所有格式網(wǎng)絡(luò):支持所有格式流媒體:支持mms,rtsp(官方說支持.但是運(yùn)行的時(shí)候.直接crash),m3u8支持
(看到這里,大家是不是覺得vitamio很強(qiáng)大很牛逼啊,確實(shí)如此!)
注:但vitamio是對個人免費(fèi),企業(yè)收費(fèi)的,如果做一些簡單的支持MP4播放就行了那就用Android提供的sdk最簡單方便實(shí)惠,所以就看需求而定吧


二、如果要用Android 自動的視頻控件VideoView實(shí)現(xiàn)播放功能簡直是炒雞簡單不過了
layout布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout   
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/activity_main"    
            android:layout_width="match_parent"
            android:layout_height="match_parent"  
            android:orientation="vertical">  
 
     <VideoView      
              android:id="@+id/videoView1"       
              android:layout_width="match_parent"
              android:layout_height="match_parent"/>

</LinearLayout>

在activity中:

import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;import android.os.Bundle;
import android.view.WindowManager;
import android.widget.VideoView;

public class Main2Activity extends Activity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener {

    private VideoView videoView1;
    private String PATH_URL = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化
        initVideoView();
    }
    private void initVideoView() {
        //設(shè)置屏幕常亮
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        videoView1 = (VideoView) findViewById(R.id.videoView1);
        //網(wǎng)絡(luò)地址
        videoView1.setVideoURI(Uri.parse(PATH_URL));
        //開始播放
        videoView1.start();
        //設(shè)置相關(guān)的監(jiān)聽
        videoView1.setOnPreparedListener(this);
        videoView1.setOnErrorListener(this); 
       videoView1.setOnCompletionListener(this);
    }

    //播放錯誤
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        return false;
    }
    //播放準(zhǔn)備
    @Override
    public void onPrepared(MediaPlayer mp) {
    }
    //播放結(jié)束
    @Override
    public void onCompletion(MediaPlayer mp) {
    }
}

**
最后大家別忘了,要連網(wǎng)的話,千萬別漏了添加網(wǎng)絡(luò)權(quán)限:
**
<uses-permission android:name="android.permission.INTERNET" />

代碼有注釋了,我就不多說了,是不是很簡單啊,沒有騙你吧,只不過真的有局限性,只支持MP4、3GP格式!!!如果要做得漂亮點(diǎn),可以自己去深入研究,我只介紹大家怎么去用哈,自己去研究才能學(xué)到東西!!!


三、用vitamio打造萬能播放器,接下來就是重點(diǎn)啦!!!!!


先列出參考資料,想深入使用vitamio的就要進(jìn)去多看看:
Vitamio 官網(wǎng):http://www.vitamio.org
農(nóng)民伯伯 博客:http://www.cnblogs.com/over140/category/409230.html(開發(fā)者之一,博客中有部分Vitamio中文API)

接下來帶大家集成vitamio sdk了,首先到vitamio官網(wǎng)下載vitamio最新的sdk,如下圖:



下載完后解壓打開后,如下圖InitActivity就是vitamio庫,vitamioLisActivity就是Demo,可以導(dǎo)入查看演示:


接下來就開始導(dǎo)入vitamio庫了,如果是用eclipse開發(fā)的就直接導(dǎo)入添加依賴包就行了,在此我就詳細(xì)說一下用Android studio的用法,因?yàn)楣雀枰呀?jīng)宣布停止用eclipse做Android開發(fā)了,加上Android studio越來越強(qiáng)大了。
新建module,選擇Android Library,重命名你喜歡的就行,最后finish。如下圖:



接著點(diǎn)開剛才下載的vitamio包的InitActivity,如下圖:



把libs目錄下的so拷貝到剛新建的module/src/mian/jniLibs目錄下,把res、src對應(yīng)拷貝到剛剛新建的module對應(yīng)目錄下就行了,這里要注意就是jniLibs目錄是要自己手動創(chuàng)建的。完成后如下圖:

然后就給所在項(xiàng)目的mudule添加依賴
compile project(':vitamio_library')

最后在AndroidManifest.xml配置
權(quán)限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

注冊activity:

<activity android:name="io.vov.vitamio.activity.InitActivity" 
 android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
   android:launchMode="singleTop" 
   android:theme="@android:style/Theme.NoTitleBar" 
   android:windowSoftInputMode="stateAlwaysHidden"/>

最后一步在程序中初始化引擎,引擎的檢查,要加入一行代碼:

配置完成了,是不是也很簡單啊!

最后的最后就只剩開始加入代碼看直播看電影去了唄!!!
layout布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                        xmlns:tools="http://schemas.android.com/tools" 
                        android:id="@+id/activity_main" 
                        android:layout_width="match_parent" 
                        android:layout_height="match_parent" 
                        android:orientation="vertical" 
               tools:context="chaomap.zsml.com.chaovitamiovideo.MainActivity">

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

</LinearLayout>

activity中:

import io.vov.vitamio.MediaPlayer;
import io.vov.vitamio.Vitamio;
import io.vov.vitamio.widget.MediaController;
import io.vov.vitamio.widget.VideoView;

public class MainActivity extends Activity implementsMediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener { 
        private VideoView mVideoView;
        private MediaController mMediaController; 
        private String PATH_URL1 = "http://clips.vorwaertsgmbh.de/big_buck_bunny.mp4";
        private String PATH_URL2 = "http://gslb.miaopai.com/stream/3D~8BM-7CZqjZscVBEYr5g__.mp4"; 
@Override
 protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
      //// if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this))// return;          
        Vitamio.isInitialized(getApplicationContext()); 
        setContentView(R.layout.activity_main); 
        mVideoView = (VideoView) findViewById(R.id.surface_view); //設(shè)置播放地址 mVideoView.setVideoPath(PATH_URL1);//   
        mVideoView.setVideoURI(Uri.parse(PATH_URL1)); //實(shí)例化控制器  
        mMediaController = new MediaController(this); //綁定控制器
        mVideoView.setMediaController(mMediaController); //控制器顯示9s后自動隱藏 mMediaController.show(9000); //設(shè)置播放畫質(zhì) 高畫質(zhì) 
        mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);  
      mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH,0); //取得焦點(diǎn) mVideoView.requestFocus(); //設(shè)置相關(guān)的監(jiān)聽 
        mVideoView.setOnPreparedListener(this); 
        mVideoView.setOnErrorListener(this); 
        mVideoView.setOnCompletionListener(this); 
}

 //播放準(zhǔn)備
 @Override
 public void onPrepared(MediaPlayer mp) { 
    // optional need Vitamio 4.0 mp.setPlaybackSpeed(1.0f);//開始播放// 
      mVideoView.start(); 
}
 //播放錯誤
 @Override 
public boolean onError(
    MediaPlayer mp, int what, int extra) {
 return false; 
} 
//播放結(jié)束 
@Override 
public void onCompletion(MediaPlayer mp) {
// mVideoView.start(); 
  }
}

有代碼有注釋,其他的我就不多說了,直接截圖給你們看看:



在此就結(jié)束了,希望大家多多指教,更多內(nèi)容請關(guān)注我的CSDN博客:luoweichao.top

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容