android 关于android视频播放器的开发

转载 2013年11月29日 17:08:46

小弟新开的淘宝店铺

店铺地址:https://shop172122426.taobao.com/?spm=2013.1.1000126.d21.JdNasm

type-c读卡器: https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-16590727134.4.ojyAeN&id=552870606536

苹果读卡器:    https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-16590727134.6.ojyAeN&id=552915271058


希望大家,多多关照



IT是一个站在巨人肩膀上的行业,今天也进行“拿来主义”;

直接用开源的播放器  VLC开源播放器

下面说对其工程的分析:

下面给出两张截图,主要是为了方便后面讲解程序结构使用,可以对照着图片看。界面和原版VLC差不多,我只是把ActionBar和视频列表做了一些调整。

  

(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)

 

 

1、背景

  一开始本来是想修改Android自带的Gallery3D程序,因为这个程序自带了视频播放功能,不过解码方面并不理想,很多格式不支持。无奈只能选用第三方的解码库,因此最后才选择了VLC作为二次开发基础。选择它的原因上面已经说过,这里不重复。

  VLC播放器不多介绍,相信做过音视频的朋友都了解,而且它基本上支持目前常见的平台。我这次二次开发的目的是把VLC原本的界面和一些播放控制修改一下,适应平板电脑上面使用,另外一个就是想掌握VLC的解码库如何使用。第一个目的,修改界面难度不会很大,因为整个界面逻辑结构,我不需要大改,只是做一些调整。所以主要目的就是了解VLC整个程序的实现。

  目前对VLC的分析主要是java层的实现,解码库那方面现在还没精力去分析,而且那一块也比较复杂。后面有时间,在考虑解码库的分析。目前主要是分析java部分代码和如何使用解码库。阅读优秀开源项目可以学到不少东西,分析Launcher就让我提高了不少,也学到了很多Android的开发知识,例如:多个ViewGroup和view之间处理触摸事件的流程。通过分析Launcher对Android触摸机制了解很深入。相信通过这次分析和修改VLC播放器,也能学到很多新知识。

  另外补充一点,VLC的源码都是开源的(包括解码库部分代码),可以用git获取,自行编译即可,我前面已经写了一篇详细获取VLC源码和编译的文章,如果不了解如何获取源码和如何编译的朋友,可以查看文章最后的链接。那篇文章提供了一个VLC的工程,可以直接导入到Eclipse里面使用。

 

 

2、程序结构

整个VLC播放器的模块可以分为下面几个重要的模块:

  • VLCLib解码库
  • 界面GUI
  • 音频部分
  • 视频部分
  • 接口定义
  • 控件和widget

  整个程序可以划分为上面的主要模块,对应上面源码的src包目录就可以看出来,至于每部分模块具体代码类,这里暂且不说,我个人也还没有完全分析完。只是掌握了程序结构和每个类大概功能。具体的后面我分析了,会继续写相关文章。

  直接主要说说程序界面逻辑,从我上面给出的截图可以看出来,程序刚启动默认就是进入视频列表。VLC的界面主要是由SlidingMenu和ActionBar构成,里面嵌入了好几个Fragment。SlidingMenu负责功能模块的切换(视频、音频、目录),具体进入视频还是音频,这个就是切换Fragment,也就是说具体的功能实现都是由Fragment实现的。SLidingMenu就是提供了切换功能,ActionBar提供了一些常用功能按钮,搜索、刷新、视频流输入、排序、设置等功能。大部分界面都会存在ActionBar,除了音频和视频播放界面。

 

 

3、程序主要模块简述

  程序的入口类是org.videolan.vlc.gui.MainActivity,也就是上面目录里面的gui下面的主Activity,这个Activity主要是检测VLC解码库以及创建相关界面的类对象和初始化功能,还有就是响应SlidingMenu和ActionBar的操作。具体的代码分析,下一篇文章再进行,今天先讲解个大概逻辑。

  视频模块的入口是视频列表org.videolan.vlc.gui.video.VideoGridFragment,上面已经说过,VLC的界面大部分都是基于Fragment实现的,视频列表也是基于Fragment,具体播放界面是另外一个Activity——VideoPlayerActivity,video包下面主要就是这两个类实现了视频播放的功能,一个是列表界面,一个是视频播放界面。其他的就是一些适配器和辅助类,到时候对视频详细解析的时候,再讲解相关类。

  音频模块主要是org.videolan.vlc.gui.audio.AudioBrowserFragment类是入口,音频播放模块里面又分了几个页面,实现了类似ViewPaper的滑动切换功能,这个倒是和元素Android的Music布局差不多。这些具体到时候分析音频模块在讲解。

  Widget和控件模块:这两个主要是实现了一些VLC自己的控件以及桌面的Widget,VLC做了一个桌面Widget是用来播放音频的,跟Android原生Music的Widget类似。

 

4、总结

  今天主要是介绍一下VLC的代码结构和主要的功能模块,下一篇文章开始会介绍VLC具体模块的分析。还有把我个人修改的情况记录下来,给有这方面开发需要的朋友参考一下。其实VLC整个java部分的代码还是挺多的,而且逻辑结构也区分很仔细。如果你已经分析过一些代码量比较多的开源工程,那分析VLC并不困难,但是如果你阅读的代码不多,这个对你来说可能是一个比较难的坎。

  整个工程其实用到了挺多技术,例如SlidingMenu、ActionBar、Fragment、AIDL、Widget、自定义View等等,如果你对这些技术都不熟悉,建议你先了解一下,特别是SlidingMenu和Fragment,这两个基本上构建了整个VLC播放器的界面。

  另外,我打算把VLC解码库的使用方法弄清楚,因为我打算把VLC的解码核心移植出来,做成一个可以方便使用的第三方库。主要是移植到我个人业余开发的一款网络收音机上面使用。另外就是独立出来,方便移植使用。

 

相关文章

Linux 下编译Android-VLC开源播放器详解(附源码下载)

 

Edited by mythou

原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3235698.html 


Android多媒体之视频播放器高级开发

Progress is the activity of today and the assurance of tomorrow.

Android开发学习之路--基于vitamio的视频播放器(二)

终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了。在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的简单...

Android视频播放器开发

Android视频播放器开发第一个播放器开发的实例,通过VideoView+MediaController的方式实现的 主要实现了视频播放、暂停、快进、快退、全屏半屏的功能...

Android VR Player(全景视频播放器) [2]:开发说明

Android VR Player(全景视频播放器) [2]:开发说明工具本项目主要的开发工具为Android Studio 2.3,Android SDK Tools版本为26.0.2,Androi...
  • OCTODOG
  • OCTODOG
  • 2017年05月05日 23:33
  • 248

Android应用开发之视频播放器

资源: ImageButton所用图片4张 Strings:MyVideoPlayer 视频文件 找不到Sd卡 找不到视频文件 布局 ...

Android本地视频播放器开发--SDL编译

在上一章   Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)中使用OpenSL ES来播放视频的声音,遗留的问题是声音的不同步,由于视频实现部分也要同步,而且音视频也...

Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器

利用android SDK 提供的接口 开发最简单的视频播放demo。 接下来贴出main.xml的源码: ...
  • tx3344
  • tx3344
  • 2012年09月25日 11:02
  • 8297

多媒体开发---视频播放器开发(android)

android中在实际的视频开发中多用即成的框架,或者自己封装相关的Manager来实现;下面介绍一个接单的android视频开发的过程: 1.实现网络和本地视频播放 2.点击控制播放...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 关于android视频播放器的开发
举报原因:
原因补充:

(最多只允许输入30个字)