基于VLC的视频播放器(转载)

最近在研究视频播放的功能,之前是使用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

横竖屏的切换也是没有问题的。

时间: 2024-12-25 00:54:35

基于VLC的视频播放器(转载)的相关文章

基于VlC的视频播放器

最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性很大. 找到了一个比较合适的播放器,Github地址为https://github.com/xiaomo/AndroidPlayerLibrary .这个播放器是基于vlc这个软件,在将我们的demo导入到Eclipse中之后,可以发现,这样一个libvlc文件夹. 在Media这个类中我们可以发现,这些是支持的格式还是比较多的

自定义基于 VLC 的视频播放器

前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer 和 Flash,因为这两个组件几乎所有 Windows 平台的电脑都会安装.但客户说不能用 Flash,原因是以前使用过,太不稳定,所以我决定使用 MediaPlayer. MediaPlayer 做为一个 COM 组件可以很方便的加载到 VS 工具箱中,使用的时候直接拖放到 Form 上,用起来超

最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器

本文记录使用libVLC的开发的最简单的视频播放器示例.VLC Media Player是一款优秀的播放器,但是由于它的源代码编译的难度比较大,一直没有深入研究过它的开发方面的技术.此前触到了一些VLC开发方面的东西,因此总结了一下libVLC的开发示例程序. 如何获取VLC的SDK VLC开发所需的库文件可以有2种获取方法: 1. 自行编译2. 直接从安装目录里面拷贝出来 第一种方法难度要大一些.尤其是在Windows下编译VLC是个比较麻烦的事情.一般情况下可以选择第二种方法获取VLC开发所

转:基于libVLC的视频播放器

本文来自于:http://blog.csdn.net/leixiaohua1020/article/details/42363079 ? 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器 本文记录使用libVLC的开发的最简单的视频播放器示例.VLC Media Player是一款优秀的播放器,但是由于它的源代码编译的难度比较大,一直没有深入研究过它的开发方面的技术.此前触到了一些VLC开发方面的东西,因 此总结了一下libVLC的开发示例程序. 如何获取VLC的SDK VL

OpenCV:基于MFC的视频播放器和图片读取器

实例工程包下载[OpenCV:基于MFC的视频播放器和图片读取器] 一.实现的功能 1.打开本地视频进行读取.播放.暂停.停止控制 2.图片打开功能分为两种:可使用"打开图片"按钮打开本地图片,或者点击comobox里面设定的图片列表选择并显示图片 二.编译环境 OS:Win8.1 x64 IDE:  Visual Studio 2013 OpenCV: 2.4.8 三.主要思路 1.视频的滑动条控制: ①主窗体的OnHScroll()响应函数负责响应slider滑动条的变化,这样就轻

转:最简单的基于 DirectShow 的视频播放器

50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectShow 播放视频所有必备的函数. 直接贴上代码,具体代码的含义都写在注释中了: /* 雷霄骅 * 中国传媒大学/数字电视技术 * [email protected] * */ // aviplayer.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #incl

基于VLC的播放器开发

VLC的C++封装 因为工作需要,研究了一段时间的播放器开发,如果从头开始做,可以学习下FFmpeg(http://www.ffmpeg.org/),很多播放器都是基于FFmpeg开发的,但是这样工作量和难度都比较大,如果想很快能拿出一个播放器来用的,可以研究下开源的播放器,参考下射手播放器作者的文章:媒体播放器三大底层架构. 对比下现有的主流播放器:媒体播放器列表,VLC是在各个方面都表现很突出的一款.VLC 是一款免费.自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,DVD.音

C#编写的基于VLC的播放器

首先看一下最终的程序效果 实现的功能: 1:打开播放的音视频文件((1)菜单栏"文件"->"打开",(2)工具栏(下面)"打开"(3)播放器右键->打开) 2:暂停,继续播放,停止音视频文件 3:进度条和右下角文本框显示播放进度 4:拖动进度条对视频定位播放 5:工具栏(下面)"快进","快退"均为5s 6:音量调节 7:菜单栏"文件"下可记录最近播放的三个文件 8:在有记录

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp