目前实时抓取手机视频数据有2种方法,一种是通过camera的回调获取源数据,这里获取的源数据是没有编码的数据。
有的人发送yuv数据然后在那绘制图片,也说视频聊天,真是可笑。这种方式是可是实现视频聊天的,但是需要移植编码库
目前可移植的有,android的opencore编码,参考http://www.shouyanwang.org/thread-184-1-1.html。
ffmpeg编码,这个网上很难找,但是也有人实现哦。(编码效率好,但是支持不了高清视频)
编码完成可以通过rtp协议发送。就可以视频啦。rtp协议什么的就不说了哦。
以上方法的代码,在这个链接最好回复我贴了代码,不是完整的。链接:http://www.eoeandroid.com/thread-51460-1-1.html
第2种方法,也就是我用的方法。
通过MediaRecorder录制。然后绑定一个localsocket,可以获取编码后的视频数据传输;
代码如下:
package com.pei;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.graphics.PixelFormat;
import android.media.MediaRecorder;
import android.net.LocalServerSocket;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
/**
* class name:VideoCameraActivity<BR>
* class description:CATCH THE VIDEODATA SEND TO RED5<BR>
* PS: <BR>
*
* @version 1.00 2011/11/05
* @author CODYY)peijiangping
*/
public class VideoCameraActivity extends Activity implements
SurfaceHolder.Callback, MediaRecorder.OnErrorListener,
MediaRecorder.OnInfoListener {
private static final int mVideoEncoder