将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式

Posted

技术标签:

【中文标题】将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式【英文标题】:Best way to stream audio and video from an Android phone to a RTMP server 【发布时间】:2012-04-15 19:10:34 【问题描述】:

我正在寻找使用 RTMP 将视频和音频从 android 手机流式传输到服务器的最佳方式。我在这个问题上花了一些时间,到目前为止,我只能使用 FFMPEG 流式传输视频。有很多方法可以为 Android 构建 lib,我想通过更多的工作,我也应该能够流式传输音频。

问题是我需要用 h264 编码视频,用 AAC 编码音频,使用 Android 的MediaRecorder 很容易做到这一点。所以我开始寻找适用于 Android 的 RTMP 库,发现这个 Red5 port 似乎运行良好。使用它,我可以非常轻松地流式传输存储在手机上的视频文件,并且音频也可以正常工作。

所以我的问题如下:有没有办法将 Android 的 MediaRecorder 输出连接到 RTMP 库?我想方法是在 setOutputFile() 中“伪造”一个文件,然后将数据发送到 RTMP 编码方法,但我想不出办法。

欢迎提供任何线索,真的。提前致谢。

【问题讨论】:

我正在寻找类似的东西。你找到线索了吗? 【参考方案1】:

您可以将数据写入FileDescriptor 而不是使用 setOutputFile() 的文件。

FileDescriptor fd = mLocalSender.getFileDescriptor();
mRecorder.setOutputFile(fd);

因此您可以将数据流式传输到套接字。从这个套接字获取数据如下所示:

mLocalServer = new LocalServerSocket(LOCAL_SOCKET_ADDRESS);

mLocalReceiver = new LocalSocket();
mLocalReceiver.connect(new LocalSocketAddress(LOCAL_SOCKET_ADDRESS));

mLocalSender = mLocalServer.accept();

if (mLocalReceiver != null)

    mInputStream = mLocalReceiver.getInputStream();

我不知道您的 RTMP 库是如何工作的,但我认为应该可以将输入流传递给该库的某些方法。

有关更多信息,您还可以查看spydroid application。它包含许多有用的内容,可用于通过 RTP 进行视频流式传输,而无需任何特殊的流式传输库。

【讨论】:

嘿,我完全错过了你的答案。谢谢!我已经在做类似的事情了,但你的回答很有帮助。【参考方案2】:

可能正在使用 Red5 媒体服务器可以帮助您。它附带了一些工作示例,可用于流式传输。

【讨论】:

以上是关于将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

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

通过 WiFi 在 Android 手机之间流式传输语音

通过WiFi在Android手机之间流式传输语音

尝试通过多点连接将音频从麦克风流式传输到另一部手机

在 Android 上使用 OpenSL ES 通过套接字通信流式传输 MP3 音频

如何将音频数据从 Android 流式传输到 WebSocket 服务器?