Vitamio的使用

vitamio是一款android以及ios视频播放的开源框架。

一.使用步骤:

(一)导入Lib的Module

1、从官网上http://vitamio.org/下载官方的demo后,直接解压,解压后会得到VitamioDemo 和VitamioBundle。VitamioBundle是作为一个Library存在的。
但是我从官网上下不到上面说的包和Demo,后面我是从它的GitHub来下载Lib文件,自己看它的API写的Demo。
Lib工程的一个地址:https://github.com/yixia/VitamioBundle/tree/v3.0

2、VitamioBundle导入工程 File -> Import -> Android -> Existing Projects Into Workspace

3、由于VitamioBundle是一个Library 需要把VitamioBundle 设置成Is Library,在VitamioBundle 右键 –properties –Android –Is Library勾上 –Apply –OK。

4、VitamioDemo 右键 –properties –Android – Add –然后选择VitamioBundle –然后选择Apply –OK

(二)创建新工程,导入res–>raw—>

libarm.so文件(lib中有)
Test_cbr.mp3文件(Demo中用)

(三)AndroidManifest设置

权限

 name="android.permission.WAKE_LOCK" />
 name="android.permission.INTERNET" />
 name="android.permission.ACCESS_NETWORK_STATE" />
 name="android.permission.WRITE_EXTERNAL_STORAGE" />
添加activity
 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" />

自己的activity加入

<category android:name="android.intent.category.DEFAULT" />

(四)初始化

Vitamio.initialize(this);

(五)使用

MediaPlayer  mediaPlayer = new MediaPlayer(this);
try {
    mediaPlayer.setDataSource(url);
    mediaPlayer.setDisplay(holder);
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
     public void onPrepared(MediaPlayer mp) {
         mediaPlayer.start();
    }
});
     mediaPlayer.prepareAsync();
     mediaPlayer.setBufferSize(1024 * 1024 * 2);
} catch (IOException e) {
    e.printStackTrace();
}

二.Vitamio的使用示例

(一)导入Lib工程这里不细说

(二)在res–>raw–>导入libarm.so文件,test_crb.mp3文件

(三)设计AndroidManifest文件


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="fuxi.vitamiodemo">

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

    <application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>
        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" />
    application>

manifest>

(四)设计布局文件


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <SurfaceView
        android:id="@+id/sv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ImageView
        android:id="@+id/iv"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerInParent="true"
        android:src="@mipmap/pause"
        android:visibility="gone" />
RelativeLayout>

这里设计一个SurfaceView播放视频文件,屏幕中间添加一个播放和停止显示图片。

(五) 注册

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //注册Vitamio
        Vitamio.initialize(this);
    }
}

(六)java代码设计

package fuxi.vitamiodemo;

import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageView;

import java.io.IOException;

import io.vov.vitamio.MediaPlayer;

public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, View.OnClickListener {
   String url = "rtmp://218.3.205.46/live/jjsh_sd";//徐州卫视
    //    String url = "http://pull99.a8.com/live/1482149676832172.flv";//网络主播
    // String url = "rtmp://zhibo2.xinyanyuan.com.cn/test_app/-10000001";//推送

    SurfaceView sv;

    MediaPlayer mediaPlayer;

    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        if (!LibsChecker.checkVitamioLibs(this))
//            return;
        setContentView(R.layout.activity_main);
        sv = (SurfaceView) findViewById(R.id.sv);
        iv = (ImageView) findViewById(R.id.iv);
        sv.getHolder().addCallback(this);
        sv.setOnClickListener(this);
        sv.getHolder().setFormat(PixelFormat.RGBA_8888);
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        mediaPlayer = new MediaPlayer(this);
        try {
            mediaPlayer.setDataSource(url);
            mediaPlayer.setDisplay(holder);
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mediaPlayer.start();
                }
            });
            mediaPlayer.prepareAsync();
            //缓存2M
            mediaPlayer.setBufferSize(1024 * 1024 * 2);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        if (mediaPlayer != null) {
            if (mediaPlayer.isPlaying())
                mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }
    }


    @Override
    public void onClick(View v) {
        //暂停
        if (mediaPlayer != null) {
            if (mediaPlayer.isPlaying()) {
                //暂停
                iv.setVisibility(View.VISIBLE);
                iv.setImageResource(R.mipmap.pause);
                mediaPlayer.pause();
            } else {
                iv.setImageResource(R.mipmap.play);
                mediaPlayer.start();
                iv.setVisibility(View.GONE);
            }
        }
    }
}

程序运行的显示的界面:

Vitamio的使用_第1张图片

这是播放卫视频道的视频,也可以播放其他频道,这个要去网上搜索地址,播放网络主播地址,一般要自己去抓包获取地址,网上的直播地址一般都是过时的;如果是要播放自己的直播视频,那么还有设计另一个程序,可以参考百度直播SDK网址:
https://cloud.baidu.com/doc/LSS/Android-Capture-SDK.html#.E6.8E.A8.E6.B5.81.20SDK.20.E5.BC.80.E5.8F.91.E6.8C.87.E5.8D.97

上面也是可以使用VideoView来播放视频,简单涉及到的代码:
布局文件:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

Java代码:

package fuxi.vitamiodemo;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

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

/**
 * 这里使用的Vitamio里面的VideoVIew来播放视频
 */

public class FlvActivity extends AppCompatActivity {

    //
    VideoView videoView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flv);
        videoView = (VideoView) findViewById(R.id.vv);
        MediaController mc = new MediaController(this);
        videoView.setMediaController(mc);
        //这里设置网络地址,可以是卫视地址,网络主播地址,总结推送地址
        videoView.setVideoPath("http://pull99.a8.com/live/1482127743567166.flv");
       //VideoView是否准备好 的回调方法
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });
        //VideoView进度条滑动后的回调方法
        videoView.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
            @Override
            public void onSeekComplete(MediaPlayer mp) {

            }
        });
    }
}

上面就是Vitamio的简单使用示例。

你可能感兴趣的:(Vitamio,Android网络)