Android中抓取手机视频流数据。

目前实时抓取手机视频数据有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 
  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
根据提供的引用内容,我无法直接回答您的问题。但是,我可以为您提供一些有用的信息。 首先,Qt是一个跨平台的C++应用程序开发框架,可以用于开发桌面应用程序、移动应用程序和嵌入式系统。OpenCV是一个开源计算机视觉库,可以用于图像处理、计算机视觉和机器学习等领域。PJSIP是一个开源的SIP协议栈,可以用于实现VoIP应用程序。 如果您想使用Qt和OpenCV抓取PJSIP视频流,您可以考虑使用以下步骤: 1.使用PJSIP实现SIP协议栈,建立SIP会话并获取视频流。 2.使用OpenCV读取视频流,并进行必要的图像处理。 3.使用Qt将处理后的图像显示在界面上。 下面是一个简单的示例代码,演示如何使用Qt和OpenCV抓取PJSIP视频流: ```cpp #include <QApplication> #include <QLabel> #include <opencv2/opencv.hpp> #include <pjsua2.hpp> using namespace cv; using namespace pj; class MyVideoWindow : public VideoWindow { public: MyVideoWindow() : VideoWindow() {} virtual void onVideoUpdate(VideoFrame &frame) { Mat img(frame.height, frame.width, CV_8UC3, frame.data[0], frame.stride[0]); cvtColor(img, img, COLOR_YUV2BGR_I420); imshow("Video", img); waitKey(1); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); // 初始化PJSUA2 Endpoint ep; ep.libCreate(); EpConfig ep_cfg; ep.libInit(ep_cfg); // 创建SIP账号 AccountConfig acc_cfg; acc_cfg.idUri = "sip:username@domain.com"; acc_cfg.regConfig.registrarUri = "sip:domain.com"; acc_cfg.sipConfig.proxies = {"sip:proxy.domain.com"}; acc_cfg.authCreds.push_back(AuthCredInfo("digest", "*", "username", 0, "password")); MyAccount *acc = new MyAccount; acc->create(acc_cfg); // 创建视频窗口 MyVideoWindow *vw = new MyVideoWindow; VideoWindowHandle vwh = (VideoWindowHandle)vw; // 创建SIP会话 CallOpParam prm; Call *call = new Call; call->makeCall("sip:destination@domain.com", prm, vwh); // 开始Qt事件循环 return app.exec(); } ``` 请注意,这只是一个简单的示例代码,您需要根据您的具体需求进行修改和扩展。
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值