十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关如何理解基于VLC的视频播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联公司自2013年起,先为彝良等服务建站,彝良等地企业,进行企业商务咨询服务。为彝良企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
最近在研究视频播放的功能,之前是使用VideoView。在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性很大。
找到了一个比较合适的播放器,Github地址为https://github.com/xiaomo/AndroidPlayerLibrary 。这个播放器是基于vlc这个软件,在将我们的demo导入到Eclipse中之后,可以发现,这样一个libvlc文件夹。
在Media这个类中我们可以发现,这些是支持的格式还是比较多的。
String[] video_extensions = { ".3g2", ".3gp", ".3gp2", ".3gpp", ".amv", ".asf", ".avi", ".divx", ".drc", ".dv", ".f4v", ".flv", ".gvi", ".gxf", ".ismv", ".iso", ".m1v", ".m2v", ".m2t", ".m2ts", ".m4v", ".mkv", ".mov", ".mp2", ".mp2v", ".mp4", ".mp4v", ".mpe", ".mpeg", ".mpeg1", ".mpeg2", ".mpeg4", ".mpg", ".mpv2", ".mts", ".mtv", ".mxf", ".mxg", ".nsv", ".nut", ".nuv", ".ogm", ".ogv", ".ogx", ".ps", ".rec", ".rm", ".rmvb", ".tod", ".ts", ".tts", ".vob", ".vro", ".webm", ".wm", ".wmv", ".wtv", ".xesc" }; String[] audio_extensions = { ".3ga", ".a52", ".aac", ".ac3", ".adt", ".adts", ".aif", ".aifc", ".aiff", ".amr", ".aob", ".ape", ".awb", ".caf", ".dts", ".flac", ".it", ".m4a", ".m4b", ".m4p", ".mid", ".mka", ".mlp", ".mod", ".mpa", ".mp1", ".mp2", ".mp3", ".mpc", ".mpga", ".oga", ".ogg", ".oma", ".opus", ".ra", ".ram", ".rmi", ".s3m", ".spx", ".tta", ".voc", ".vqf", ".w64", ".wav", ".wma", ".wv", ".xa", ".xm" };
在这个例子中它自己写了一个PlayerActivity和PlayerView,在PlayerView中实现了libvlc中的IVideoPlayer接口
在PlayerActivity中实现PlayerView类,从而进行界面和流程的控制。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUrl = getIntent().getStringExtra("url"); if (TextUtils.isEmpty(mUrl)) { Toast.makeText(this, "error:no url in intent!", Toast.LENGTH_SHORT).show(); return; } requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_player); mHandler = new Handler(this); tvTitle = (TextView) findViewById(R.id.tv_title); tvTime = (TextView) findViewById(R.id.tv_time); tvLength = (TextView) findViewById(R.id.tv_length); sbVideo = (SeekBar) findViewById(R.id.sb_video); sbVideo.setOnSeekBarChangeListener(this); ibLock = (ImageButton) findViewById(R.id.ib_lock); ibLock.setOnClickListener(this); ibBackward = (ImageButton) findViewById(R.id.ib_backward); ibBackward.setOnClickListener(this); ibPlay = (ImageButton) findViewById(R.id.ib_play); ibPlay.setOnClickListener(this); ibFarward = (ImageButton) findViewById(R.id.ib_forward); ibFarward.setOnClickListener(this); ibSize = (ImageButton) findViewById(R.id.ib_size); ibSize.setOnClickListener(this); llOverlay = findViewById(R.id.ll_overlay); rlOverlayTitle = findViewById(R.id.rl_title); rlLoading = findViewById(R.id.rl_loading); tvBuffer = (TextView) findViewById(R.id.tv_buffer); //使用步骤 //***步 :通过findViewById或者new PlayerView()得到mPlayerView对象 //mPlayerView= new PlayerView(PlayerActivity.this); mPlayerView = (PlayerView) findViewById(R.id.pv_video); //第二步:设置参数,毫秒为单位 mPlayerView.setNetWorkCache(20000); //第三步:初始化播放器 mPlayerView.initPlayer(mUrl); //第四步:设置事件监听,监听缓冲进度等 mPlayerView.setOnChangeListener(this); //第五步:开始播放 mPlayerView.start(); //init view tvTitle.setText(mUrl); showLoading(); hideOverlay(); }
关于如何使用这个类库
库两种使用方式:
***种,直接new一个PlayerView或者在布局文件的xml里面嵌入view。
第二种,跳转到一个写好的播放页面PlayerActivity (本地文件参数格式:file:///sacard/test.rmvb。)
这里我选择了第二种方法
startActivity(new Intent(this, PlayerActivity.class).putExtra("url", items.get(position)));
通过一个选择列表的形式,点击每一项,传递一个url到PlayerActivity
选择列表中的1.2JDK下载.mp4
横竖屏的切换也是没有问题的。
上述就是小编为大家分享的如何理解基于VLC的视频播放器了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。