使用Android NDK8 移植FFmpeg 0.11.1

之前在公司一个项目中一直使用 http://www.cnblogs.com/mcodec/articles/1780598.html 提供的H264 Android解码库
但是经常崩溃,最终定位到mc_dir_part函数中的

尝试了一晚上也没修复好这个问题,于是打算自己移植FFmpeg
mcodec 兄所做的工作是将H264解码的代码从ffmpeg中提取出来做了深度优化,而本人对FFmpeg?还不甚了解,无法做到提取,而且新版本相互依赖太重,于是将整个FFmpeg?移植过来使用。
在配置时关闭了所有特性,只开启了所需的H264解码库,arm汇编特性,其余全部关闭。
以下是我的配置代码 继续阅读“使用Android NDK8 移植FFmpeg 0.11.1”

Android通过JUV+Red5+Speex实现网络语音聊天(一)

本例严重过期,并且使用了不开源且收费的库
请尝试最新开源版:
Android基于OpenSL ES,Speex,RTMP的Voip客户端实现
iOS版:
iOS基于Audio Queues,Speex,Rtmp的Voip客户端

—————-仅供参考请勿用于项目———————–
先说下实现原理,手机采集到语音后进过Speex编码,通过juv以直播形式发布自己的语音流到red5,也是通过juv播放对方的直播流,经过Speex解码后输出到扬声器,如下图:

Android  voip  流程图
Android端采集编码和解码播放Speex,参考android-recorder,至于他用的red5客户端,看了下,没看明白。。。
核心代码如下:

继续阅读“Android通过JUV+Red5+Speex实现网络语音聊天(一)”

安装配置Red5 Server 1.0 RC1 (一)

在做完一个基于RTMP的音视频通话软件后,想深入了解下RTMP协议的实现。
项目的服务器环境是FMS,这里,对另一种开源的服务端 Red5做个了解。

需要Jre环境。

下载最新版1.0 RC1?http://trac.red5.org/downloads/1_0/setup-Red5-1.0.0-RC1.exe
安装,在过程中会需要输入服务器IP和HTTP访问的端口号。

安装完毕,运行安装目录下的?red5.bat 一闪而过。OK,用cmd运行。发现报一下错误:

google一番后知道,需要删除lib目录继续阅读“安装配置Red5 Server 1.0 RC1 (一)”

android.git.kernel.org 无法访问后 repo失败的完美解决方法

自kernel.org遭受攻击,android.git.kernel.org梦见了电子羊,到kernel.org linux.com?linux.org 停机维护,android.git.kernel.org直接连域名解析都关了
这导致repo拼命想连接android.git.kernel.org,然后一次一次失败

但是repo还得继续用啊,默认情况下 都是从 android.git.kernel.org ?下载全套的repo工具集到.repo/repo目录下,再用这套工具集去下载git服务器上的源码库。

网上有个办法 http://carltao.blog.51cto.com/856514/667469 但我确实没找出作者修改了什么地方

于是继续google,总算被我找到完美的解决办法了 继续阅读“android.git.kernel.org 无法访问后 repo失败的完美解决方法”

编译Openfime G2D,G3D内核模块时的错误解决方法

在编译Tom3q所写s3c6410 android 图形驱动模块(g2d,g3d)时,遇到如下错误

红字部分是主要错误,“kmalloc”,“kfree”错误是由于缺少头文件引起的

#include <linux/slab.h>

添加后解决

问题是由于2.6.36内核之后 去掉了原来的ioctl,添加两个新的成员,所以会出错

  1. long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
  2. long (*compat_ioctl) (struct file *, unsigned int, unsigned long);

所以修改源文件中file_operations内

.ioctl 改为 .compat_ioctl 即可

OK,编译通过,警告咱就忽略了?:mrgreen:

图示:如何选择开源许可证

如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种—-GPLBSDMITMozillaApacheLGPL—-之中做选择,也很复杂。

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。只用两分钟,你就能搞清楚这六种许可证之间的最大区别。下面是阮一峰先生制作的中文版。 继续阅读“图示:如何选择开源许可证”