Android - 将流相机作为RTMP流

Goo*_*oey 8 android rtmp video-streaming

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

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

我已经浏览了一下,发现这个SO 转换视频输入流到RTMPhttps://github.com/yixia/VitamioBundle.前者提出了一个几乎没有文档的库.后者可能支持它(?),但它需要API 14+.

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

编辑1:

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

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

aer*_*tal 17

接受问题的答案中,有人建议使用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";
Run Code Online (Sandbox Code Playgroud)

private String ffmpeg_link = "rtmp://<server>:<port>/stream";
Run Code Online (Sandbox Code Playgroud)

  • 最后我通过在RecordActivity类中设置RECORD_LENGTH = 0解决了黑色视频问题. (2认同)