J2ME技术手机流媒体(视频、音频)开发
1.手机JAVA实现支持移动媒体API(MMAPI),MMAPI在Java社区进程中以JSR-135开发(可从手机说明书中得到此信息)
例如:有手机dopod696,SonyEricssonp908未提供JSR135实现,NoKIA7610提供JSR135实现
2.针对手机进行流媒体开发时,首先确定手机JAVA实现支持的流媒体内容类型(即支持的视频格式)
下述代码可以得到手机JAVA实现支持的所有媒体内容类型
String[]contentTypes=
Manager.getSupportedContentTypes(null);
Video/3gpp,video/mpeg,audio/mp3…….
3.手机进行视频开发,MMAPI必须实现支持控制操作VideoControl类(VideoControl控制可视内容的显示).
*必须明白,并不是所有的MMAPI实现都支持所有的控制操作类型。
例如MOTOK系列手机MMAPI未实现VideoControl类(手机模拟器中已验证)
可通过System.getProperty(Stringkey)得到一个设备所支持的控制类型.
Key值取:
video.encodings返回一个代表所支持的视频格式的字符串,如果不支持视频内容则返回“null”。
audio.encodings返回一个代表所支持的音频格式的字符串,如果不支持音频内容则返回“null”。
4.手机流媒体:确定手机JAVA实现支持的流媒体协议(RTSP协议)
1.流媒体概念:
流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。
2.流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。
实现流式传输有两种方法:实时流式传输(Realtimestreaming)和顺序流式传输(progressivestreaming)。一般说来,如视频为实时广播,或使用流式传输媒体服务器,或应用如RTSP的实时协议,即为实时流式传输。如使用HTTP服务器,文件即通过顺序流发送。
1>顺序流式传输不适合长片段和有随机访问要求的视频,如:讲座、演说与演示。它也不支持现场广播,严格说来,它是一种点播技术。
实时流式传输
2>实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。理论上,实时流一经播放就不可停止,实时流式传输还需要特殊网络协议,如:RTSP(RealtimeStreamingProtocol)或MMS(MicrosoftMediaServer)。
总结:
J2ME手机流媒体实现视频广播(如移动监控,电视节目)开发满足条件:
1.手机JAVA实现支持实时流传输协议:如:RTSP(RealtimeStreamingProtocol)或MMS(MicrosoftMediaServer)。
2.流媒体服务器支持手机JAVA实现能播放的视频格式.如3gpp格式
目前能够支持3GP流式播放的流媒体服务器有:
Real的HelixMobileStreamingServer,
苹果的QTSSStreamingServer,
PacketVideo的PVStreamingServer,
以及国内星谷科技的VServer。
附录:
1.MMAPI支持的控制操作
MMAPI在javax.microedition.control包中包含了12种控制操作:
MetaDataControl用来从媒体数据中获得元数据信息。
MIDIControl提供对播放器表现和传输设备的访问。
GUIControl代表一个具有用户界面组件的控制操作。
PitchControl升高或降低重放的位置而不改变重放的速度。
RateControl控制重放的速率。
TempoControl控制MIDI歌曲的节奏。
VolumeControl控制音量。
VideoControl控制可视内容的显示。
FramePositioningControl可以对一个视频帧精确定位。
RecordControl记录当前被Player播放的是什么内容。
StopTimeControl使应用程序可以为一个Player预先指定一个停止时间。
ToneControl是一个可以播放用户自定音调序列的接口。
2.各大手机厂商开发网站
http://developer.sonyericsson.com
https://developer.motorola.com
http://www.forum.nokia.com/index.html
http://www.dopod.com
3.几种常用流媒体服务器介绍
使用HTTP协议的流媒体传输,
当前最红的格式是FLV,当今的视频网站如youtube,土豆网等都是使用这种文件格式。FLV的全名是
FlashVideo,特点为文件体积小、跨平台(不依赖于操作系统和浏览器),占用资源小,所以成为了网络最流行的视频格式。
因为使用HTTP协议,传输FLV所用的服务器的选择有很多:
(1)Lighttpd,youtube所使用的服务器
(2)Nginx,由俄罗斯的IgorSysoev开发的性能优越的轻量级webserver
(3)red5,一个java开源FLV服务器
(4)apache
(5)FlashMediaServer,adobe的FLV服务器,收费的。
其它常用的流格式按照厂商和平台的不同可以分为三个类别:
(1)Helixserver
real公司的产品,支持RTSP,RTP,PNM等协议,主用用于rm,rmvb,mp3等格式的流传输
可以在Windows和linux平台下架设,开源。
(2)WindowsMediaServices
微软开发的windows平台下的流媒体服务器,支持mms协议,用于wmv、asf等格式的流传输。
(3)Darwin
Apple公司的流媒体服务器,开源,可部署在linux平台,用于mov和各种mpeg4格式的流传输,如3gp等。
4.什么是3GP文件
随着手机功能的日益强大,不少朋友用上了可以拍摄和播放视频短片的视频手机,这些视频手机里存储的视频文件通常以.3gp为后缀,
就是大家平时所说的3gp文件。
关于3gp文件的来历,要从3gpp这个国际组织说起。3gpp是3rdGenerationPartnershipProgram的缩写,翻译成中文叫做第三代合作伙
伴计划,是由欧洲的ETSI,日本的ARIB和TTC,韩国的TTA以及美国的T1在1998年底发起成立的,旨在研究制定并推广基于演进的GSM核心网
络的3G标准,即WCDMA,TD-SCDMA,EDGE等。中国无线通信标准组(CWTS)于1999年加入3GPP。3GPP的目标是实现由2G网络到3G网络的平滑过
渡,保证未来技术的后向兼容性,支持轻松建网及系统间的漫游和兼容性。
3gpp组织制订了一系列面向第三代移动通信的标准规范,涵盖了核心网、空中接口、终端等各个环节,其中也包括了多媒体文件格式的
规范,3GPPTS26.244,即3gp文件。
3GPPTS26.244里面规定了3GP媒体文件的封装格式,音频编码格式,视频编码格式以及流化的扩展等几个方面。
3GP媒体文件的封装格式沿用了ISO媒体文件的封装格式。大家在PC上看到的.mp4文件也是采用ISO媒体文件的封装格式