直播 RTMP/RTSP 播放器,无需在 Android 上使用 webview(WOWZA 服务器)

Posted

技术标签:

【中文标题】直播 RTMP/RTSP 播放器,无需在 Android 上使用 webview(WOWZA 服务器)【英文标题】:Live stream RTMP/RTSP player without using webview (WOWZA server) on Android 【发布时间】:2013-12-20 10:28:53 【问题描述】:

我正在开发一个 android 应用程序,我想在其中发布和流式传输视频...

我想要的是:

    我的应用录制了一段视频,并将该视频发送到服务器

    录制的视频将同时流式传输到另一台 Android 设备..

我已经使用javac and ffmpeg 完成了第一个任务。我被困在第二个任务中。我已经搜索了很多从服务器流式传输视频,但我没有成功。我不想使用 WebView 并在其中播放视频。我想要一个 RTMP 播放器。此任务已在 ios 中完成......我希望在 Android 中也一样。有什么链接可以完成我的任务?

附:

我正在使用 wowza 服务器 和 RTMP 流。我想流式传输 RTMP 视频 (.flv)...如果没有可用的解决方案,我想切换到 RTSP,为此还需要一个工作链接。

现在我已经切换到 RTSP 播放器 [with wowza server],因为我没有找到没有 webview 的 RTMP 播放器。我该如何解决这个问题?

【问题讨论】:

不好意思一一打开链接。 1)***.com/questions/17910227/… 2)***.com/questions/10123498/… 我对 RTSP 服务器有疑问。你是在使用一些免费的服务器还是你有自己的。如果是我们自己的服务器,请给我一些有关它的信息。它是像 Http 一样的普通服务器吗?我们是否需要在服务器端编写服务来监听流?请在这里指导我 我们使用了wowza server。 @SweetWisherツ有一个简单的问题,我正在尝试使用与您尝试过的相同的问题walking-productions.com/notslop/2013/01/16/… 有时会崩溃...延迟较高。你是如何设法解决这个问题的?请回复... 如果您还没有准备好使用 Wowza,您可以使用red5pro.com,它提供了适用于 Android 和 iOS 的 SDK。 【参考方案1】:

如果没有其他选择,可以使用spydroid-ipcamera,这是一个开源项目。它是您要求的替代方案。我已经检查过了,它提供了实时视频处理。

【讨论】:

我们在使用 live 555 方面取得了很大的成功,现在我们的目标是 IOS,但 live 555 非常便携,我们希望能够轻松移植到 Android。我建议看看它。基本上你可以使用 android 从摄像头捕获帧,然后将它们传递给 h264descreteFramer 和 rtpSink,这两个都是可用的 live 555 类。 我不想从安卓设备上截取视频,我想将视频从 wowza 服务器直播到安卓设备【参考方案2】:

我正在使用Adobe AIR 播放 RTMP,非常棒。我找到了答案here;看代码:

function init_RTMP():void

    streamID  = "RT_2";
    videoURL = "rtmp://fms5.visionip.tv/live/RT_2";

    vid = new Video();

    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);
    nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
    nc.connect(videoURL);


private function onConnectionStatus(e:NetStatusEvent):void

    if (e.info.code == "NetConnection.Connect.Success")
    
        trace("Creating NetStream");
        netStreamObj = new NetStream(nc);

        metaListener = new Object();
        metaListener.onMetaData = received_Meta;
        netStreamObj.client = metaListener;

        netStreamObj.play(streamID);
        vid.attachNetStream(netStreamObj);
        addChild(vid);
    

【讨论】:

感谢您的回答,但正如我所说,我现在无法切换到 Adob​​e AIR.. :( Anas 是否有任何用于在 android 中实现它的 Android SDK 设置提供一些参考链接,如果你有.. @Lucky 很抱歉,我没有,我使用的是 Adob​​e Air 而不是 Android Java。 @/anas: 这使得它对 android 毫无用处,不是吗? @anas 糟糕,我的印象是 Adob​​e 放弃了支持。应该在发表评论之前用谷歌搜索。【参考方案3】:

您可以通过 Vitamio Lib 轻松完成。 Vitamio 可以在 Android 和 iOS 中播放 720p/1080p HD、mp4、mkv、m4v、mov、flv、avi、rmvb、rm、ts、tp 和许多其他视频格式。 Vitamio 支持几乎所有流行的流媒体协议,包括 HLS (m3u8)、MMS、RTSP、RTMP 和 HTTP。

从here 下载 Vitamio Bundle。

还有来自here的演示。

来自here的教程。

【讨论】:

我正在通过link发送直播。它包括 FFMPEG 库。现在,我在我的项目中集成了这个 VITAMIO 库,但我收到了这个错误link 请注意,Vitamio 的标准版仅限十二个月vitamio.org/en/License Vitamio for Android 现已弃用 @Ameer 如果不推荐使用 Vitamio,现在应该使用什么? Perharps ExoPlayer for Android ,它得到了社区的大力支持,它也得到了谷歌的支持,并具有出色的 API 架构。 #exoplayer #android

以上是关于直播 RTMP/RTSP 播放器,无需在 Android 上使用 webview(WOWZA 服务器)的主要内容,如果未能解决你的问题,请参考以下文章

rtmp/rtsp/hls公网测试地址

RTMPRTSPHTTP视频协议详解(附:直播流地址播放软件)

国标GB/T28181流媒体服务获取接入的设备通道直播流地址HLS/HTTP-FLV/WS-FLV/RTMP/RTSP

Windows平台RTMP/RTSP直播推送模块设计和使用说明

LiveGBS国标视频平台如何获取接入视频通道的直播流地址HLS/HTTP-FLV/WS-FLV/WebRTC/RTMP/RTSP

Windows平台Unity Camera场景实现轻量级RTSP服务和RTMP推送