您的位置:首页 > 其它

Vitamio VideoView 示例

2016-04-26 13:39 162 查看
VideoView 播放本地视频
/** * 会根据视频尺寸自动缩放 * 自己对VideoView设置的宽高基本不起任何作用 */public class VideoViewDemo extends Activity implements io.vov.vitamio.MediaPlayer.OnPreparedListener, OnClickListener {    private EditText et_path;    private Button bt_play;    private VideoView mVideoView;    @Override    public void onCreate(Bundle icicle) {        super.onCreate(icicle);        Vitamio.isInitialized(this);        setContentView(R.layout.videoview);        et_path = (EditText) findViewById(R.id.et_path);        bt_play = (Button) findViewById(R.id.bt_play);        mVideoView = (VideoView) findViewById(R.id.surface_view);        mVideoView.setMediaController(new MediaController(this));        mVideoView.setOnPreparedListener(this);        bt_play.setOnClickListener(this);    }    @Override    public void onPrepared(MediaPlayer mp) {        mp.setPlaybackSpeed(1.0f);    }    @Override    public void onClick(View v) {        String filepath = et_path.getText().toString().trim();        mVideoView.setVideoPath(Environment.getExternalStorageDirectory().getAbsolutePath() + filepath);        mVideoView.requestFocus();        mVideoView.start();    }}<?xml version="1.0" encoding="utf-8"?><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/surface_view"        android:layout_width="300dp"        android:layout_height="300dp"        android:layout_gravity="center_horizontal" />    <EditText        android:id="@+id/et_path"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="/a.rmvb" />    <Button        android:id="@+id/bt_play"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="播放本地多媒体" /></LinearLayout>

VideoView 播放网络视频、控制缩放类型[/b]
/** * 字幕,调整视频缩放类型 * @author 白乾涛 */public class VideoViewSubtitle extends Activity implements OnPreparedListener, OnClickListener, OnTimedTextListener {    //HTTP,无效    //path=  "http://www.modrails.com/videos/passenger_nginx.mov";    //path=  "http://wsmp32.bbc.co.uk/";    //RTSP,无效    //path= "http://m.livestream.com";    //path= "rtsp://xgrammyawardsx.is.livestream-api.com/livestreamiphone/grammyawards";    //MMS,无效    //path= "mms://112.230.192.196/zb12";    //path = "mms://ting.mop.com/mopradio";    //组播 ,无效    //path = "udp://236.1.0.1:2000";    private String path = "http://dlqncdn.miaopai.com/stream/MVaux41A4lkuWloBbGUGaQ__.mp4";    private String subtitle_path = "";    private VideoView mVideoView;    private TextView mSubtitleView;    private Button btn_changeLayout;    private Button bt_play1, bt_play2, bt_play3, bt_play4;    private long mPosition = 0;    private int mVideoLayout = 0;    @Override    public void onCreate(Bundle icicle) {        super.onCreate(icicle);        Vitamio.isInitialized(getApplicationContext());        setContentView(R.layout.subtitle2);        mVideoView = (VideoView) findViewById(R.id.surface_view);        btn_changeLayout = (Button) findViewById(R.id.btn_changeLayout);        bt_play1 = (Button) findViewById(R.id.bt_play1);        bt_play2 = (Button) findViewById(R.id.bt_play2);        bt_play3 = (Button) findViewById(R.id.bt_play3);        bt_play4 = (Button) findViewById(R.id.bt_play4);        btn_changeLayout.setOnClickListener(this);        bt_play1.setOnClickListener(this);        bt_play2.setOnClickListener(this);        bt_play3.setOnClickListener(this);        bt_play4.setOnClickListener(this);
mVideoView.setVideoPath(path);        mVideoView.setMediaController(new MediaController(this));        mVideoView.requestFocus();        mVideoView.setOnPreparedListener(this);        mVideoView.setOnTimedTextListener(this);    }    @Override    protected void onPause() {        mPosition = mVideoView.getCurrentPosition();        mVideoView.stopPlayback();        super.onPause();    }    @Override    protected void onResume() {        if (mPosition > 0) {            mVideoView.seekTo(mPosition);            mPosition = 0;        }        super.onResume();        mVideoView.start();    }    @Override    public void onPrepared(MediaPlayer mp) {        mp.setPlaybackSpeed(1.0f);        mVideoView.addTimedTextSource(subtitle_path);//不知道哪来的API        mVideoView.setTimedTextShown(true);//不知道哪来的API    }    @Override    public void onClick(View v) {        if (v.getId() == R.id.btn_changeLayout) {            changeLayout(v);        } else {            switch (v.getId()) {            case R.id.bt_play1:                path = "http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com   /D046015255134077DDB3ACA0D7E68D45.flv";                break;            case R.id.bt_play2://HLS m3u8                path = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";                break;            case R.id.bt_play3:                path = "http://7xt0mj.com1.z0.glb.clouddn.com/xia.v.1280.720.f4v";                break;            case R.id.bt_play4:                path = "http://7xt0mj.com1.z0.glb.clouddn.com/lianaidaren.v.640.480.mp4";                break;            }            mVideoView.setVideoPath(path);            mVideoView.requestFocus();            mVideoView.start();        }    }    @Override    public void onTimedText(String text) {        mSubtitleView.setText(text);    }    @Override    public void onTimedTextUpdate(byte[] pixels, int width, int height) {    }    public void changeLayout(View view) {        mVideoLayout++;        if (mVideoLayout == 4) mVideoLayout = 0;//循环        switch (mVideoLayout) {        case 0:            mVideoLayout = VideoView.VIDEO_LAYOUT_ORIGIN;//原始画面            view.setBackgroundResource(R.drawable.mediacontroller_sreen_size_100);            break;        case 1:            mVideoLayout = VideoView.VIDEO_LAYOUT_SCALE;//全屏            view.setBackgroundResource(R.drawable.mediacontroller_screen_fit);            break;        case 2:            mVideoLayout = VideoView.VIDEO_LAYOUT_STRETCH;//拉伸            view.setBackgroundResource(R.drawable.mediacontroller_screen_size);            break;        case 3:            mVideoLayout = VideoView.VIDEO_LAYOUT_ZOOM;//裁剪            view.setBackgroundResource(R.drawable.mediacontroller_sreen_size_crop);            break;        }        mVideoView.setVideoLayout(mVideoLayout, 0);//第二个参数为【宽高比】,为0将自动检测    }}<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="400dp"        android:layout_gravity="center_horizontal"        android:orientation="vertical" >        <io.vov.vitamio.widget.CenterLayout            android:id="@+id/dd"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:orientation="vertical" >            <io.vov.vitamio.widget.VideoView                android:id="@+id/surface_view"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_centerHorizontal="true"                android:layout_centerVertical="true" />        </io.vov.vitamio.widget.CenterLayout>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_centerHorizontal="true"            android:text="@string/res_audio" />    </RelativeLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <Button            android:id="@+id/bt_play1"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="flv" />        <Button            android:id="@+id/bt_play2"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="m3u8" />        <Button            android:id="@+id/bt_play3"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="f4v" />        <Button            android:id="@+id/bt_play4"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="mp4" />        <Button            android:id="@+id/btn_changeLayout"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="@drawable/mediacontroller_sreen_size_100" />    </LinearLayout></LinearLayout>

VideoView 显示缓冲信息[/b]
/** * 显示缓冲相关信息 * @author 白乾涛 */public class VideoViewBuffer extends Activity implements OnInfoListener, OnBufferingUpdateListener, OnPreparedListener {    private String path = "http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com   /D046015255134077DDB3ACA0D7E68D45.flv";        private Uri uri;    private VideoView mVideoView;    private ProgressBar pb;    private TextView downloadRateView, loadRateView;//网速和已经加载的百分比    @Override    public void onCreate(Bundle icicle) {        super.onCreate(icicle);        Vitamio.isInitialized(getApplicationContext());        setContentView(R.layout.videobuffer);        mVideoView = (VideoView) findViewById(R.id.buffer);        pb = (ProgressBar) findViewById(R.id.probar);        downloadRateView = (TextView) findViewById(R.id.download_rate);        loadRateView = (TextView) findViewById(R.id.load_rate);
uri = Uri.parse(path);        mVideoView.setVideoURI(uri);        mVideoView.setMediaController(new MediaController(this));        mVideoView.requestFocus();        mVideoView.setOnInfoListener(this);        mVideoView.setOnBufferingUpdateListener(this);        mVideoView.setOnPreparedListener(this);    }    //******************************************************************************************    @Override    public boolean onInfo(MediaPlayer mp, int what, int extra) {//在有警告或错误信息时调用。例如:开始缓冲、缓冲结束、下载速度变化        switch (what) {        case MediaPlayer.MEDIA_INFO_BUFFERING_START://开始缓存,暂停播放,显示正在加载            if (mVideoView.isPlaying()) {                mVideoView.pause();                pb.setVisibility(View.VISIBLE);                downloadRateView.setText("");                loadRateView.setText("");                downloadRateView.setVisibility(View.VISIBLE);                loadRateView.setVisibility(View.VISIBLE);            }            break;        case MediaPlayer.MEDIA_INFO_BUFFERING_END://缓存完成,继续播放            mVideoView.start();            pb.setVisibility(View.GONE);            downloadRateView.setVisibility(View.GONE);            loadRateView.setVisibility(View.GONE);            break;        case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED://显示 下载速度(KB/s)            downloadRateView.setText("" + extra + "kb/s" + "  ");            break;        }        return true;    }    @Override    public void onBufferingUpdate(MediaPlayer mp, int percent) {//在网络视频流缓冲变化时调用        loadRateView.setText(percent + "%");    }    @Override    public void onPrepared(MediaPlayer mp) {        mp.setPlaybackSpeed(1.0f);    }}<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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.CenterLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical" >        <io.vov.vitamio.widget.VideoView            android:id="@+id/buffer"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_centerHorizontal="true"            android:layout_centerVertical="true" />    </io.vov.vitamio.widget.CenterLayout>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:orientation="horizontal" >        <ProgressBar            android:id="@+id/probar"            style="?android:attr/progressBarStyleLarge"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <TextView            android:id="@+id/download_rate"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="" />        <TextView            android:id="@+id/load_rate"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="" />    </LinearLayout></RelativeLayout>


来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: