xUtils框架,Volley框架,Vitamio框架

xUtils的几大模块
XUtil3的注解模块,网络模块,图片加载模块, 数据库 模块。
注解模块
活动的注解 
1.在应用程序的的OnCreate方法中加入下面代码: 
x.Ext.init(本);  
2.在活动的的OnCreate方法中加入下面代码: 
。x.view()注入(本);  
3.加载当前的活动布局需要如下注解: 
@ContentView加入到活动的上方 
4.给视图进行初始化需要如下注解: 
@InjectView 
5.处理控件的各种响应事件需要如下注解: 
@Envent 
凌空的特性:
  • JSON,图像等的异步下载;
  • 网络请求的排序(调度)
  • 网络请求的优先级处理
  • 缓存
  • 多级别取消请求
  • 和活动和生命周期的联动(活动结束时同时取消所有网络请求)
1.首先拿到一个请求队列(请求队列只需要一个实例即可,不像的AsyncTask每次使用都要新一个)

2.实现抽象的异步请求类(JsonObjectRequest,JsonArrayRequest,StringRequest,ImageRequest

Vitamio是一个Android和ios上基于FFmpeg的开源项目.Vitamio为我们提供了一个清洁,简单,全面,真实的硬件加速解码器和渲染器的API,Vitamio是一个支持多种音视频格式如FLV,TS / TP,WMV,DivX,Xvid等多种标准格式的非常强大的库。所有不同的是,它也支持类似.mkv和.srt嵌入和外部字幕播放。但是它带有一个许可证,因此在使用它(HLS),RTSP流和彩信(Microsoft Media Stream)。首先让我们的项目中引用Vitamio库。

Android RTSP流媒体
实时流协议(RTSP)通过多媒体服务器传输内容,例如YouTube的使用RTSP流发布内容。关于RTSP流比较容易的部分是,它可以通过Android的标准的VideoView来完成
但是如果你使用Vitamio库,可以更好的播放RTSP流。事实上Vitamio也支持RTSP流的回播。和上面过程是一样的,包括Vitamio的VideoView在布局文件,并使用路径变量指定的RTSP网址

Android m3u8流媒体
“如何在android上播放m3u视频”是android开发者最常见的问题之一。通过Http协议进行视频流直播最简单的办法就是使用标准的VideoView。但只能在android3.0以上的设备播放m3u8流。因为在Android 3.0引入HTTP / HTTPS直播和HTTP / HTTPS渐进式流媒体协议,在android3.1完全支持HTTPS。
应该考虑使用Vitamio库,这个库支持在Android API7以上播放m3u8。使用方式,同样的在布局文件中使用Vitamio的VideoView,并指定的HTTP实时流媒体URL。

Android MMS流
维生素库是一个强大的库,还支持微软媒体服务器(MMS)流中的播放。MMS是网络流媒体协议,主要用于网络广播和电台直播。使用Vitamio用于在Android的MMS流和其他协议没有什么不同。所有你需要做的只是更换路径变量指向一个彩信网址:
mVideoView =(VideoView)findViewById(R.id.vitamio_videoView); path =“mms://beotelmedia.beotel.net/studiob”; mVideoView.setVideoPath(路径); mVideoView.setMediaController(new MediaController(this)); mVideoView.requestFocus(); mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){@Override public void onPrepared(MediaPlayer mediaPlayer){mediaPlayer.setPlaybackSpeed(1.0f);}});

结论
通过上面的讨论,可以确定地说,Vitamio是一个强大的多平台库(IOS和Android)。通过使用Vitamio库能播放多种类型的视频格式和协议如RTMP,RTSP,HTTP Live和HTTP渐进式流协议。另外一个很好的功能是,vitamio支持字幕和多音轨的播放.Vitamio的唯一的缺点是,它不是完全的开源。您可能需要购买许可证来使用它。希望这会有所帮助通过Facebook,Google +和Twitter来联系我们获取更多更新。


RTMP是实时消息传输协议的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议和RTMPT / RTMPS / RTMPE等多种变种.RTMP是一种设计用来进行实时数据通信的网络协议,主要用于在Flash / AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。 。
协议概述

rtmp RTMP(实时消息协议)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间的音频,视频和数据传输开发的开放协议。
它有多种变种:
1)RTMP工作在TCP之上,默认使用端口1935;
2)RTMPE在RTMP的基础上增加了加密功能;
2)RTMPT封装在 HTTP请求 之上,可穿透防火墙;
3)RTMPS类似RTMPT,增加了TLS / SSL的安全功能;

Java实现视频网站的视频上传,视频转码,视频关键帧抽图,及视频播放功能
视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是闪存动画文件,可通过闪存制作的播放器来播放该文件。项目中用制作的player.swf播放器。
多媒体视频处理工具FFmpeg的有非常强大的功能包括视频采集功能,视频格式转换,视频抓图,给视频加水印等。  
ffmpeg的视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
1.能支持的格式
FFMPEG能解析的格式:(ASX,ASF,MPG,WMV,3GP,MP4和MOV,AVI,FLV等)
2.不能支持的格式
对的ffmpeg无法解析的文件格式(WMV9,RM,RMVB等),可以先用别的工具(mencoder的)转换为AVI(FFMPEG能解析的)格式。
实例是将上传视频转码为FLV格式,该格式的ffmpeg支持,所以我们实例中需要ffmpeg的视频处理工具。
数据库 MySQL5.5
实例所需要的数据库脚本
如果存在的话drop database db_mediaplayer;创建数据库db_mediaplayer;使用db_mediaplayer;创建表tb_media(id int not null主键auto_increment comment'主键',title varchar(50)not null注释'视频名称',src varchar(200)not null comment '视频存放地址',picture varchar(200)not null comment'视频截图',描述varchar(400)comment'视频描述',uptime varchar(40)comment'上传时间'); desc tb_media;

ENCTYPE属性值说明
应用程序/ x-WWW窗体-urlencoded
表单数据被编码为名称/值对,这是标准的编码格式
多部分/格式数据
表单数据被编码为一条消息,页面上每个控件对应消息中的一部分
纯文本/
表单数据以纯文本形式进行编码,其中不含任何控件格式的字符
 
业务接口定义
面向接口编程,接口中定义系统功能模块。这样方便理清业务,同时接口的对象必须由实现了该接口的对象来创建。这样就避免编码中的某些业务遗漏等,同时扩展性也增强了。
public boolean executeCodecs(String ffmpegPath,String upFilePath,String codcFilePath,String mediaPicPath)throws Exception {  
//创建一个List集合来保存转换视频文件为flv格式的命令  
List <String> convert = new ArrayList <String>();  
convert.add(ffmpegPath); //添加转换工具路径  
convert.add( “ - 我”); //添加参数“-i”,该参数指定要转换的文件  
convert.add(upFilePath); //添加要转换格式的视频文件的路径  
convert.add( “ - qscale”); //指定转换的质量  
convert.add( “6”);  
convert.add( “ - AB”); //设置音频码率    
convert.add( “64”);  
convert.add( “ - AC”); //设置声道数  
convert.add( “2”);  
convert.add( “ - AR”); //设置声音的采样频率  
convert.add( “22050”);  
convert.add( “ - R”); //设置帧频  
convert.add( “24”);  
convert.add( “ - Y”); //添加参数“-y”,该参数指定将覆盖已存在的文件  
convert.add(codcFilePath); //创建一个List集合来保存从视频中截取图片的命令  
List <String> cutpic = new ArrayList <String>();  
cutpic.add(ffmpegPath);  
cutpic.add( “ - 我”);  
cutpic.add(upFilePath); //同上(指定的文件即可以是转换为flv格式之前的文件,也可以是转换的flv文件)  
cutpic.add( “ - Y”);  
cutpic.add( “ - F”);  
cutpic.add( “图像2”);  
cutpic.add( “ - SS”); //添加参数“-ss”,该参数指定截取的起始时间  
cutpic.add( “17”); //添加起始时间为第17秒  
cutpic.add( “ - T”); //添加参数“-t”,该参数指定持续时间  
cutpic.add( “0.001”); //添加持续时间为1毫秒  
cutpic.add( “ - S”); //添加参数“-s”,该参数指定截取的图片大小  
cutpic.add( “800 * 280”); //添加截取的图片大小为350 * 240  
cutpic.add(mediaPicPath); //添加截取的图片的保存路径  
布尔标记=真;  
ProcessBuilder builder = new ProcessBuilder();  
尝试{  
builder.command(转换);  
builder.redirectErrorStream(真);  
builder.start();  
builder.command(cutpic);  
builder.redirectErrorStream(真);
//如果此属性为true,则任何由此对象的start()方法启动的后续子进程生成的错误输出都将与标准输出合并,//因此两者均可使用Process.getInputStream()方法读取。这使得关联错误消息和相应的输出变得更容易  
builder.start();  
catch(Exception e){  
mark = false;  
的System.out.println(E);  
e.printStackTrace();  
}  
返回标志 }

欢迎关注微信号:魅影响

或扫描下方二维码关注



猜你喜欢

转载自blog.csdn.net/meiwei_1/article/details/53308685
今日推荐