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开发06_VideoView、SurfaceView两种视频播放器

一、前言 Android中视频播放的方式有两种,一种是使用系统封装好的VideoView,使用起来比较方便,系统API把所有播放的内容都封在了这个类中,唯一不足的是无法自定义,比如你想修改播放的进度条...

Android视频播放器开发—— 探究MediaPlayer

概述之前在公司都是做金融和博彩相关的app,很少接触到视频播放类的应用开发,趁最近比较闲,想逐步学习相关的知识,给自己增加点视频类app开发的经验,也希望读者能够从我个人的学习当中得到一些启发。 一...

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

在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片、标题、时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获...

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

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

Android使用VLC库开发自己的视频播放器

本文介绍在Ubuntu 16.04 64位环境下,Android VLC源码编译流程,并使用AS工具制作一个视频播放器Demo。

Android应用开发之视频播放器

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

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

Android VR Player(全景视频播放器) [2]:开发说明工具本项目主要的开发工具为Android Studio 2.3,Android SDK Tools版本为26.0.2,Androi...

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

在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片、标题、时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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