问题汇总

WearSport

GPS打点数据爆表

打点采样优化

动画卡顿

PhoneSport

View绘制

WatchMusicPlayer

三方框架实现

第三方音乐适配

表盘控制

Unity3D

NGUI

NetworkView

快鸟

启动页优化

跳出率是指在只访问了入口页面(例如网站首页)就离开的访问量与所产生总访问量的百分比
启动页优化策略

引导页优化

MIUI项目组

Token刷新

流量查询

CDN加速

偷跑流量

加速效果不理想

秀吧

音视频上行预研

Android终端设备视频直播上行发布

方案1:视频采集 + RTMP

视频采集方法可二选一, Android版本的RTMP协议有多种开源实现,常用的有下面三种:

RED5:比较主流开源实现,网上有对应的开源project实现 android-recorder,这个版本的实现要求客户端与服务器端的RTMP版本兼容,否则客户端在连接成功后在开始创建流的时候,服务端把连接断开了,这个已在我们自己的服务器上验证,是匹配的;

国内开源project中采用的 android-rtmp-client,它是上面red5的精简版,编码上没有前者这么麻烦,存在的问题同上;

国外收费的rtmpclient,申请注册码或者进行破解,这个已有牛人提供了破解教程,并且提供下载,可以直接使用,这个有待验证。

方案2:视频采集 + ffmpeg + RTMP(待测)

FFMPEG在linux、windows平台上运行良好,能进行视频采集,编解码、播放以及流化能力,但在Android平台,使用最多的还它的播放、编解码能力。而视频采集一般使用已介绍的二种方式,目前要探究的课题是在Android平台,如何通过ffmpeg来发布视频。

FFMPEG是支持RTMP协议的,所以在linux/windows平台能通过以下方式来发布视频,实现直播。

1
ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp

目前Android上的ffmpeg移植也有很多参考材料,但甚少提及其发布功能,这部分需要深入阅读ffmpeg的源码,才能看到其流化接口,然后再发布。

视频采集

前后摄像头可以正常切换,目前是通过前置摄像头来采集数据

Camera + PreviewCallback(Interface)

所采集的视频数据一般在PreviewCallback 的实现函数中获取。
public void onPreviewFrame(byte[] data, Camera camera)
该data数据为YUV格式的原始视频帧数据,一般为YUV420SP,这里要完成 yuv->rgb->视频流的转化过程(这块儿的具体过程还并不非常清晰)
并且音视频数据是没有经过编码处理的,此处可以使用第三方编码库来处理,如果ffmpeg、或者x264、AAC编码后再发布

Camera + MediaRecorder

通过MediaRecorder获取的视频数据是已经编码过后的数据,在获取视频数据之前可以指定音视频编码格式,输出格式
支持 本地存储 + 远程输出

视频播放

由于目前的Android秀吧终端是能进行视频下行直播的,用的是ffmpeg,关于播放,此处不考虑

视频发布RTMP

方法1:开源red5

demo1视频采集使用mediarecorder, 目前按照 RTMP协议,以下流程能正常走通

1>Client→Server :发送一个与流媒体服务器建立连接的请求.
2>Server→Client : 服务器确认建立连接
3>Client→Server : 发送一个创建流的请求
4>Server→Client :服务器确认流请求,并返回一个表示流的索引号.
5>Client→Server :提交一个发布数据的请求
6>Server→Client :服务器确认数据发布请求
7>Client→Server :发送视音频数据包(这些包在同一个频道(channel)并用流的索引号来唯一标识).

问题:demo在完成视频录制以后,再将视频发到服务器,在上面的第7步中,视频发布以后,服务器的解包有问题,定位应该是RTMP视频打包有问题,目前想把这一整套流程走通。

后面再实时发包看看视频效果

方法2:开源red5精简版 android-rtmp-client

面临的问题同上

方法3:rtmpclient破解版

demo2视频采集使用 PreviewCallback, rtmp使用破解版的rtmpclient

1> RTMP

2> FFMPEG

Android机顶盒

Setting、Framework定制

Launcher开发、焦点框特效重绘、滑动延时、按键屏蔽

设备主控、界面提示框

升级、JAVA/C同步