A Live Streaming Method Based On PC Camera For Android Platform
--Android平台接收基于 PC camera 直播流的方案
一、可行性:Android平台上对Windows Media Audio/Video编码流支持性的测试
经了解,android平台目前主要有ActPlayer,Yxflash和WuzhenhuaPlayer等几种播放器支持WMV播放,分别下载到模拟器上安装测试以后,发现只有WuzhenhuaPlayer在版本为1.6的android平台上可以播放WMV。
在模拟器上的测试结果如下表
系统版本 直接使用MediaPlayer 安装三方软件WuzhenhuaPlayer android2.2 不能播放WMV 不能播放WMV 不能播放WMV 不能播放WMA android1.6 不能播放WMV 可以播放WMV 可以播放WMA 可以播放WMA 以上两种平台下的四种测试结果都针对本地音视频文件和网络多媒体文件(如:***.wma),而对于经过Windows Media Encoder编码后的流(如::1474),四种情况下都不能播放。
以上两种平台下的四种测试结果都针对本地音视频文件和网络多媒体文件(如:***.wma),而对于经过Windows Media Encoder编码后的流(如::1474),四种情况下都不能播放。
基于测试结果,首先对比了android1.6和android2.2的系统库,发现android1.6比android2.2多了五个共享库,即位于\system\lib目录下的
由文件名称推测它们为WMA和WMV的解码库以及与ASF容器相关的解析库。
虽然android1.6系统中已经有了WMV解码库,直接使用MediaPlayer中的方法依然不能直接播放WMV(但是可以播放WMA),安装使用WuzhenhuaPlayer可以播放WMV和WMA。而WuzhenhuaPlayer在android2.2上安装后,依然不能播放WMV和WMA。
跟踪WuzhenhuaPlayer后,发现作者在播放器内部调用了库
使用IDA反汇编工具对libWuzhenhuaPlayer.so进行分析,查看到该库里面包括
等与WMV编码解码相关的模块,由于是针对ARM处理器编译的库,单独提取这些解码模块较为困难。
二、摄像头直播真机测试:
1、配置环境:
测试机型:HTC G4 TATOO 三星galaxy i7500
ROM版本:Android 1.6
服务器端OS:Windows XP
服务器软件:Windows Media Encoder 9
客户端软件:yxFlash1.1.8+注册机keymaker
2、操作步骤:
整体的步骤与TCPMP直播方案相同,这里由于被测的真机受分辨率和帧率的限制,在对视频输出时需要按如下参数配置:
目标:Windows Media 服务器(流式处理)
视频:低宽带视频(CBR)
音频:语音质量音频(CBR)
比特率:46kbps
分辨率:160*120
帧率:15fps
3、测试结果:
(1)单独直播音频(WMA编码)正常流畅;
(2)直播WMV时视频不稳定,偶尔会自动返回不显示图像,原因尚不明确;
(2)真机上直播画面延迟约为6.5秒。
三、总结及心得体会
Android模拟器的多媒体视频播放功能,在2.0版本以后反而不如1.6的支持性好。如支持格式少,播放MP4(H264)卡屏,花屏等现象。另外,虽然android是一个源码开放的平台,但OPENCORE的多媒体框架显得开放性不够好,这使得加入三方解码库难度增加。