Android平台的流媒体注意事项

Android平台的App可能会受到很多天生的限制,很多在pc不用考虑的问题,在这里需要多加注意,在2年左右的开发实践中,碰到了很多很多问题,大概的列一列,如果对各位程序员朋友有所帮助,倍感欣慰。


1.内存,大概会有一个限制,30M左右,当然这个好像可以改,但面向个人的恐怕很难搞,只能省着点用,尽可能的少加载到内存

2.java,gc,对于流媒体这种需要不停使用内存的应用来说,使用java无疑是找死,最终还是由C,C++,通过jni的方式来实现了内存的自行管理。

  原先的问题是,同样的方法来播放音频,例子程序中一切正常,而在App中就不行,究其原因是App中的音频buffer是不停的分配的,导致gc经常介入,一旦gc介入,整个应用就卡主,导致音频的播放越累越慢,最终播放的声音是对方好久好久以前的声音。

java中的gc是个大问题,就像有些大牛们说的那样,成也gc,败也gc啊。作为java程序原来说,无能为力!

3.由于音频的这个gc的问题,很明显的是视频也由C,C++来实现

4.视频的采集方面,网上有很多做法,一种是由Android的好像是MediaRecorder来实现,但是发现它给出的码流无法控制,有的支持H264,有的不支持,有的基本能够实时的给出码流,有的给出的码流大概是2s中给出一次,所以程序拿到的码流是2s中一次,而一次拿到的是之前2s中内的码流,这样无法做到实时,很痛苦。

5.对于Android上编译X264,ffmpeg,那大概也要费一番功夫。中间还设计到arm5,arm7 neon的区别,当然如果不考虑asm,那就不用考虑arm体系结构了,呵呵。不过性能可能会打些折扣,期待着Android机器的性能提升吧。

6.还是要吐槽一下java各种教程,各种文章的不负责任,各种getView()版本的例子,基本都是new各种东西,包括各种clicklistener,导致创建很多垃圾出来,有的时候还会出现点击按钮什么的没有响应的情况,哎!!!或许是java的恶心,或许是java程序员对java的理解不透。反正看《core java》的说法,一方面强调java就是为了简单,一方面又一次又一次的搞出些特殊的语法或者其他来补漏洞,哎!何必呢!还得我们广大的java程序写出的代码有很多陷阱,漏洞!【当然这是站在一个C,C++程序员的角度看问题啦】

7.网络,java的Socket真的不怎么的。用起来总是要这流那流的,还是感觉BSD的那套socket接口好用,当然,速度也会比java的快吧。而且,不是所有的java程序员,都能用好nio的内容的,更何况,selector这东西为了支持退出,还占用一对socket,或者别的,总之多余的系统资源。

8.NullPointerException,大概是这么拼的吧,java到底有没有指针?各位?


暂时想到的是这些,以后想到再继续吧。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值