Vitamio 多媒体框架 介绍

功能

Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。到目前,全球已经有超过 一万 种应用在使用 Vitamio,覆盖用户超过 5亿 。
Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。

流媒体支持
Vitamio 支持各种常见的流媒体协议,可以点播或者直播音频和视频,例如如下常见协议均能无缝支持:
  • HLS - HTTP
  • MMS
  • RTSP (RTP, SDP), RTMP
  • HTTP progressive streaming
  • live streaming (M3U8)

音频和视频格式 Vitamio 使用了 FFmpeg 做为媒体解析器和最主要的解码器,同时开发了针对不同移动平台的硬解码方案,能够完美支持 H.264/AVC、H.263、 MPEG4 等常见的视频编码,覆盖上百种多媒体格式。下表只是一些最常见的视频格式支持,除特殊标明,全部支持硬件加速:
  • AVI
  • DivX/Xvid
  • WMV (一般只有软解码)
  • FLV
  • TS/TP
  • RMVB (只有软解码)
  • MKV
  • MOV
  • M4V
  • MP4
  • 3GP

字幕支持 Vitamio 对字幕的支持很优秀,包括各种常见外挂字幕与很多视频格式的内嵌字幕,同多个字幕等特性的支持也非常完善
除了上面列出的常见功能之外,Vitamio 还做了相当多人性化的工作:
  • 流媒体播放缓冲支持
  • 多音轨与字幕支持
  • 细致的 CPU 与 GPU 优化
  • 支持手机到平板各种设备
  • 播放画面比例大小随手调节
  • 自动文字编码检测,拒绝乱码
还有更多新特性没有被列出,请参考开发文档。

FAQ

Vitamio名字的由来
Vitamio的中文名称为“维他蜜”。
Vitamio 来源于英文单词Vitamin(维他命),希望Vitamio对于安卓多媒体开发者的重要性,就像Vitmain之于人体一样不可缺少。

Vitamio与VPlayer什么关系? Vitamio基于VPlayer开发,所以VPlayer能播放的Vitamio也能。
Vitamio支持哪些指令集的CPU? 支持 ARMv6 和 ARMv7 两种 ARM CPU,同时对 VFP, VFPv3, NEON 等指令集都做相应优化。
Vitamio支持的Android版本 支持 Android 2.1+ 系统,支持超过 95% 的 Android 市场。同时 Android 2.1 之前的系统也基本支持,不过没做详细测试。
E/Vitamio(1557): java.io.FileNotFoundException: No content provider 这个不是错误,是正常的处理。现在播放视频是这样做的:先把 URL 当做一个 ContentProvider 来打开,如果打不开,就直接当做 URL 来打开。
视频/视频流(rtp、rtsp等)播放不了的问题! 可能存在以下几种情况: 视频本身就存在问题,你可以用其他播放器播放一下,是否能正常播放。 本地网速不给力/设备本身配置过低。 视频源卡,本身带宽不够,直接访问也很慢。 嵌套了m3u8地址 视频被加密了 建议先使用VPlayer和其他播放器来测试视频,确保排除外在因素。
如何调用VPlayer来播放视频?    private void startPlayer(String url, String title) { Intent i = new Intent(); i.setComponent(new ComponentName("me.abitno.vplayer.t", "me.abitno.vplayer.VideoActivity")); i.setAction("me.abitno.vplayer.action.VIEW"); i.setData(Uri.parse(url)); i.putExtra("displayName", title); startActivity(i); }
在混淆时如何忽略Vitamio相关类库的混淆? -keep class io.vov.utils.** { *; } -keep class io.vov.vitamio.** { *; }
播放时拖动进度条,拖动进度不准确? 这是正常现象,不是播放器的问题。默认seek要到最近的关键帧,不能保证任何时间戳上都有关键帧,除非你是intra-only 的编码方式。
如何开启硬解码? 实例化MediaPlayer时启用第二个参数。 public MediaPlayer(android.content.Context ctx, boolean preferHWDecoder)
为什么每次软件升级都会重新解压解码包? 为确保与当前升级软件中Vitamio的版本保持一致。Vitamio Java层的代码都已经公开,你可以自己改逻辑。

开发建议

1、以Android Library的方式使用Vitamio
使用方便,集成方便,不容易出错。也支持jar方式使用。

2、给播放器所在的Activity设置android:process 例如android:process=":vitamio",关闭Activity时直接kill,防止底层库可能存在的BUG导致的崩溃问题。 同理也可以通过关闭Activity、重新startActivity来切换剧集。
3、增加缓冲处理 进入播放器的Activity时默认显示"正在加载中...",第一次start后隐藏,其他的参考官网缓冲处理文档即可。否则会出现第一次进来黑屏的情况。
4、Android TV盒子建议默认使用RGB565 盒子上如果出现花屏或者模糊的情况,一般使用RGB565就可以了。
5、平衡兼容更多设备和Vitamio的包大小 兼容的CPU架构越多(arm、x86、mips)Vitamio的包越大,如果只想支持ARMv6+的设备,可以使用dist/online_arm下面的so,一般适用于在线视频播放,如果还嫌包大,你可以用7z解压libarm.so,可以看到如下文件夹和对应关系: 60 <=> armv6 61 <=> vfp 70 <=> armv7 71 <=> neon 可自行裁剪重新打包。更多内容参考这里https://github.com/yixia/VitamioBundle/wiki/How-to-use-Vitamio-4.2.0-online-version%3F
6、设置合适的缓冲大小 VPlayer默认缓冲大小设置(setBufferSize):如果是本地视频,设置为0;网络视频,设置为 512 * 1024(单位byte)。在onPrepared之后设置,还可以在这里设置音量、画面质量、反交错等参数。
8、设置倍速播放(快进快退) MediaPlayer的setPlaybackSpeed方法,取值范围[0.5 - 2.0],默认1.0。
9、设置边播边下功能 文件下载setdataSouce的使用形式 Uri.parse("cache:/sdcard/download.mp4:" + uri),注意cache的路径要存在并且可以访问到。
10、关注、使用最新版的Vitamio版本 最新的release包地址:https://github.com/yixia/VitamioBundle/releases
11、不熟悉Git的用户也可以用SVN从Github中取代码 比如取4.2.2release:svn checkout https://github.com/yixia/VitamioBundle/tags/v4.2.2
12、其他有用的文章 参见Github上的wiki:https://github.com/yixia/VitamioBundle/wiki

测试地址


可用的地址

http://7xt0mj.com1.z0.glb.clouddn.com/xia.v.1280.720.f4vhttp://7xt0mj.com1.z0.glb.clouddn.com/lianaidaren.v.640.480.mp4http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8http://dlqncdn.miaopai.com/stream/MVaux41A4lkuWloBbGUGaQ__.mp4
http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com   /D046015255134077DDB3ACA0D7E68D45.flv

HLS - Apple HTTP live streaming - m3u8 http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 http://live.3gv.ifeng.com/zixun.m3u8 (直播)
HTTP http://www.modrails.com/videos/passenger_nginx.mov http://wsmp32.bbc.co.uk/
RTSP http://m.livestream.com (site) rtsp://xgrammyawardsx.is.livestream-api.com/livestreamiphone/grammyawards
MMS mms://video.fjtv.net/setv mms://ting.mop.com/mopradio mms://112.230.192.196/zb12

来自为知笔记(Wiz)

时间: 2024-11-05 20:41:56

Vitamio 多媒体框架 介绍的相关文章

iOS多媒体框架介绍

媒体层 媒体层包含图形技术.音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易.您可以使用iOS的高级框架更快速地创建高级的图形和动画,也可以通过底层框架访问必要的工具,从而以某种特定的方式完成某种任务. 图形技术 高质量的图形是iOS应用程序的重要组成部分.创建应用程序最简单最有效的方法是使用事先渲染过的图片,搭配上标准视图以及UIKit框架的控件,然后把绘制任务交给系统来执行.但是在某些情况下,您可能需要一些UIK

Android多媒体开发介绍(转)

Android多媒体开发介绍 转自:http://blog.csdn.net/reiliu/article/details/9060557 一.       多媒体架构 基于第三方PacketVideo公司的OpenCORE来实现,支持所有通用的音频/视频/静态图像格式,包括:MPEG4.H.264.MP3.AAC.AMR.JPG.PNG.GIF等.从功能上分为两部分,一是音/视频的回放(PlayBack),二是音视频的纪录(Recorder). CODEC(编解码器)使用OpenMAX 1L

android多媒体框架学习 详解 最新版本

一:多媒体框架概述   jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现了media 在整个android系统中的重要性!framework/av下都是些C/C++代码(libmedia,libmediaplayerservice,libstagefright),jni和 java api 还是保留在原来的位置,改革还不够彻底,但还是迈出了这一步,以后维护能更好的进

Qt phonon多媒体框架(Phonon只是一个空的容器)

Phonon是什么?Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能.目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能.phonon最初是 一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架.应用程序不用去管多媒体播放是通过什么实现的(如gstreamer.xine),只需调用相应的接口就行,但

Android多媒体框架对音乐播放器的支持

下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些. 1. MediaScannerReceiver 这个广播接收者在接收到ACTION_BOOT_COMPLETED.ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片.音乐和视频文件进行了扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService,扫描的文件类型如下: /* Audio */ addFileType("MP3&q

Foundation框架介绍

1.Foundation框架介绍 什么是框架? 众多功能\API的集合 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易,在OS X下的Mac操作系统中大约有80个框架,为所有程序开发奠定基础的框架称为Foundation 框架 Foundation框架的作用 Foundation框架是Mac\iOS中其他框架的基础 Foundation框架包含了很多开发中常用的数据类型: 结构体 枚举 类 如何使用Foundation框架 Foundation框架中大约有

如何在程序开发项目中选择合适的 JavaScript 框架,节省时间和成本的9款极佳的JavaScript框架介绍

从技术上来看,iOS,Android 和 Windows Phone 上的移动应用是使用不同的程序语言开发的,iOS 应用使用 Objective-C,Android 应用使用 Java,而 Windows Phone 应用使用 .NET. .随着 JavaScript,CSS 和 HTML 知识技能的提升,相信你也可以构建一个超赞的移动应用.在这篇博客里,我们将会介绍一些极好的 JavaScript 移动应用程序开发框架. 说到网络开发,就不得不说 JavaScript,这是一款很有前途的程序

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

android多媒体框架学习开篇

接下去一段时间,入手学习安卓系统的多媒体框架部分,估计要花上半年左右.希望这个过程能有所获得,我也会在csdn上记录学习的整个过程,一方面督促自己整理知识,一方面跟大家分享一下学习的过程,坚持! 版权声明:本文为博主原创文章,未经博主允许不得转载.