Android - 将流相机作为RTMP流

时间:2015-03-12 19:27:17

标签: android video-streaming rtmp

我想从Android设备捕获相机流并将其流式传输到具有RTMP的服务器(服务器 out 我的控件)。我还没有想出如何从相机本身创建数据流,但这是为了以后的关注。

目前有两个问题:我希望支持API 9+,并且Android不支持RTMP。

我已经环顾四周,发现了这篇帖子Convert video Input Stream to RTMPhttps://github.com/yixia/VitamioBundle。前者建议a library 几乎没有文档。后者可能支持它(?),但它需要API 14 +。

是否有适当的示例或库,支持来自Android设备的RTMP流?我还读过有关转换RTSP或FFMPEG的内容,如果这是一种可行的方式,那么我想它也足够了。

编辑1:

我发现this library(它与上面提到的很相似)并尝试使用。我在Android Studio中导入了它并编写了一些代码,但它似乎在内部崩溃,出现java.lang.NoClassDefFoundError RTSP Codec Factory错误。显然,这在Android上运行得不是很好。

另外,我曾经多次遇到Adobe空气。我不想在Action Script 3(AS3)中编写代码,因为这个库只是本机应用程序的一个(小)部分。如果Adobe Air有一个我不知道的库,那么如果可能,我很乐意将它集成。

3 个答案:

答案 0 :(得分:17)

accepted answer of the question you linked有人建议使用JavaCV。

它需要API 8或更高版本,并具有 FFmpegFrameRecorder 类。

链接到github:

https://github.com/bytedeco/javacv

他们甚至有一个完整的捕获flv样本(它相当大,所以我不会在这里粘贴): https://github.com/bytedeco/javacv/blob/master/samples/RecordActivity.java

在您的情况下,您可能需要替换:

private String ffmpeg_link = "/mnt/sdcard/stream.flv";

private String ffmpeg_link = "rtmp://<server>:<port>/stream";

答案 1 :(得分:2)

你应该看看spydroid;它完全符合您的要求。他们的网站可以在这里找到:https://code.google.com/p/spydroid-ipcamera/

它们提供了一个可以使用的库,以及各种流选项和一些代码示例的说明。所述信息可在此处找到:https://github.com/fyhertz/libstreaming

答案 2 :(得分:1)

如果您可以使用ffmpeg支持的协议从您的Android设备发布(请参阅the list of protocols supported),您可以使用以下命令将视频传输到您的服务器:

ffmpeg -re -i <input link> -vcodec h264 -ar 44100 -f flv "rtmp://<host>/<publication>"