Vitamio 视频框架使用心得

    xiaoxiao2021-03-25  234

      vitamio框架是一个国产项目,大大简化了ffmpeg 的使用难度。可以在github 下载集成到自己的 项目中来。

    xml 布局中  

    io.vov.vitamio.widget.VideoView 作为视频的容器,默认宽高为 match_parent ,在初始化时候视频后会根据视频的宽高显示。

    在播放视频之前需要 初始化 .so 的组件,建议在 要播放的 Activity 的最开始 加上:

    Java if (!LibsChecker.checkVitamioLibs(this)) return;

    然后给 VideoView 设置 视频 地址:

    Java mVideoView.setVideoPath("http://lmcw.cn/xxxxxx.mp4");

    视频地址可以是本地地址和网络地址,网络地址支持  rtsp 、rtmp、http 等 。也就是说可以播放TV盒子的视频源实现在线观看直播电视。

    除了通过 mVideoView.setVideoPath(); 设置地址外还可以这样做,我们先看看setVideoPath()里是什么:

    setVideoPath(String path) {   setVideoURI(Uri.(path)); }

    setVideoPath() 里面很明显就只是调用了 setVideoURI() 该方法,当然更多强大的功能就是这个了,可以通过该api来设置视频缓存功能。

     = Uri.("cache:/sdcard/download.mp4:"+);.setVideoURI();

    这样的话你要播放的视频,会一边播放一边缓存到设置的路径下。唯一遗憾的是视频需要重新加载,不能无刷新设置。

    还有可以设置 播放视频的质量,但是我只测试了直播视频,并没有效果,我想应该是本地视频和网络普通视频有效果吧。

    mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_LOW); *设置视频质量。参数quality参见MediaPlayer的常量: *VIDEOQUALITY_LOW(流畅)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高质)。

    设置视频加载数据的大小,这个根据网络的好坏来设置吧,一般默认就可以了。

    mVideoView.setBufferSize();

    设置视频加载中监听,实现视频缓冲速度和完成度

    mVideoView.setOnBufferingUpdateListener();

    在事件中 处理一些数据的 除法和 控件的显示隐藏。具体的代码请看官方demo 的 VideoViewBuffer.java 

    错误信息事件监听本身感觉有个小问题,当视频地址不对无法播放了,会弹出一个英文提示框。但是当你自己设置了监听还是会弹出,解决办法就是 项目搜索错误的关键词把那句弹出框给注掉即可,错误操作写到自己监听的方法里面。

    mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { new AlertDialog.Builder(VideoViewBuffer.this).setTitle(getResources() .getString(R.string.videoErrTitle)) .setMessage(getResources().getString(R.string.videoErrMsg)) .setPositiveButton(getResources().getString(R.string.videoErrBtn), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }).setCancelable(false).show(); return true; } });

    mVideoView.setOnPreparedListener   视频加载完成发生(不是视频播放完成) mediaPlayer.setPlaybackSpeed(1.0f);  视频大小比例(如果没记错的话) mVideoView.stopPlayback();    停止视频,并且释放资源,当 Activity onPause()状态可调用。 mVideoView.start();      开始播放,如果上次是暂停状态,再调用就是继续播放,不会重新加载。 mVideoView.pause();   暂停视频 mVideoView.getCurrentPosition(); 获取当前播放位置,对直播视频没什么卵用,因为长度位置。 mVideoView.seekTo(mPosition);  猜都能猜到是 设置播放位置的,还是同上,直播视频没什么卵用。 mVideoView.setVideoLayout(mVideoLayout, 0);  设置视频大小的,比如缩放,全屏,比例神马的。 mVideoLayout值有: VideoView.VIDEO_LAYOUT_ORIGIN; VideoView.VIDEO_LAYOUT_SCALE; VideoView.VIDEO_LAYOUT_STRETCH; VideoView.VIDEO_LAYOUT_ZOOM;

    mVideoView.setMediaController(new MediaController(this));  设置视频控制器,这个就是框架自带的控制器,点击视频下面就会弹出一个 布局,有暂停,播放,进度条,等。普通视频比较有用,不需要再写这功能了,直播视频无视。。。

    还有挺多关于 VideoView 类的 功能

    除了 VideoView 播放 视频外,vitamio还有 MediaPlayer类播放音频 使用方法 也差不多,官方demo 有详细的使用方法 .

    最重要的提示:播放视频的activity 一定要关闭屏幕旋转,用手动切换。不然在屏幕来回旋转的情况下 activity 会闪退,并且 如果之前的页面有 frament 的话会 重叠。该问题可能是 vitamio 重复加载发生的。

    转载请注明原文地址: https://ju.6miu.com/read-1137.html

    最新回复(0)