gpt4 book ai didi

android - 来自 Android 设备相机的视频流

转载 作者:行者123 更新时间:2023-11-29 02:12:05 24 4
gpt4 key购买 nike

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

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

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

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

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

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

我的问题是我是不是把事情复杂化了,以 RTP 数据包发送视频和音频的原始数据就足够了,流媒体服务器会处理剩下的吗????请在这件事上提供任何帮助和指导,我将不胜感激。

谢谢

最佳答案

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

此外,我建议您通过套接字创建一个 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传输的方式正是我现在的困扰。

关于android - 来自 Android 设备相机的视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com