来自 Android 设备摄像头的视频流

Posted

技术标签:

【中文标题】来自 Android 设备摄像头的视频流【英文标题】:Video Streaming from Android device camera 【发布时间】:2011-10-07 05:12:51 【问题描述】:

我正在尝试在 android 上构建一个应用程序,将视频从设备相机流式传输到流式服务器。

我查看了不同的帖子和解决方案,这是我目前的状态,在(我使用了 Sipdroid、jboss-netty 和在wireshark 上分析数据包)的帮助下

    我构建了 RTSP 堆栈并成功连接到服务器 2.我理论上能够创建一个 rtp 数据包并将其发送到 服务器

我的问题是捕获帧并在 RTP 数据包中发送数据。 我有两个方向:

1- 使用摄像头和AuidoRecorder 捕捉原始媒体数据并使用rtp 发送,问题是这些数据是否应该根据RTSP 的ANNOUNCE 中的.sdp 文件描述进行编码???据我了解,来自相机和麦克风的数据将是未编码的原始数据 另一件事是如何正确地在 RTP 数据包中制定这些原始数据。

2- 媒体记录器已经对数据进行了编码,我可以设置 .sdp 文件中定义的编码。我试图找到一种从输出文件中读取的方法,但这需要我转换 .sdp 文件。 mp4 文件数据以流式传输数据,这似乎是一项复杂的任务。

我的问题是我是否过于复杂了,是否足以在 RTP 数据包中发送视频和音频的原始数据,而流媒体服务器会处理其余的 ???? 请在这方面提供任何帮助和指导..

谢谢

【问题讨论】:

您能否通过蜂窝网络发起连接?如果是这样,您是如何克服手机上所有传入端口被阻止的问题? 您找到解决方案了吗? 【参考方案1】:

首先,您必须按照 .sdp 文件的描述对数据进行编码。您想尝试使用 MediaRecorder 而不是 AuidoRecord? MediaRecorder 允许您设置您将获得的数据的编码。

此外,我建议您通过 Socket 创建一个 FileDescriptor,以便可以通过套接字流而不是静态文件来传输数据。 代码可能是这样的:

Socket socket = new Socket(serverAddr, serverPort);
socket.setTcpNoDelay(true);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
Camera camera = Camera.open();
camera.unlock();
MediaRecorder recorder = new MediaRecorder();
recorder.setCamera(camera);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
recorder.setVideoFrameRate(15);
recorder.setVideoSize(480, 320);
recorder.prepare();
recorder.start();

RTP 中的传输方式正是我现在困扰的问题。

【讨论】:

如何从 ParcelFileDescriptor 播放视频或音频 pfd = ParcelFileDescriptor.fromSocket(socket); mediaPlayer.setDataSource(pfd.getFileDescriptor());它对我不起作用。它显示无法创建媒体播放器。我必须做什么?

以上是关于来自 Android 设备摄像头的视频流的主要内容,如果未能解决你的问题,请参考以下文章

Quickblox cordova 示例视频 webrtc 应用程序不在 Android 设备上显示摄像头流

Android - 将视频从摄像头流式传输到另一个Android设备

android wifi直接直播摄像头视频流

将实时视频广播从 android 相机流式传输到服务器

如何在Matlab中同时使用多个USB网络摄像头?

如何创建具有多个后置摄像头的 android 模拟器