使用Android将实时视频流传输到服务器

时间:2014-03-07 08:56:10

标签: android video video-streaming

我们必须使用Android Camera捕获实时视频,并将它们发送到服务器,然后其他用户将通过浏览器或其他内容读取它们。

我在Google搜索并搜索过,并且有一些关于视频流应用的示例:

1 Android-eye:https://github.com/Teaonly/android-eye

2 Spydroid-ipcamera:https://code.google.com/p/spydroid-ipcamera/

然而,它们似乎有不同的环境,大多数应用程序将启动HTTP服务器以进行流请求,然后客户端将通过本地网络访问该页面并查看视频。

然后视频流源和服务器都是这样的设备: enter image description here

但我们需要像这样的互联网支持: enter image description here

所以我想知道是否有其他想法。

3 个答案:

答案 0 :(得分:35)

我可以看到你在第二张图中正确设计了三个阶段。

所以你需要的是确定如何在这些协议中进行选择以及如何对它们进行接口。  没有人可以为您提供完整的解决方案,但已经完成了Android Video Streaming上的企业项目,我会尽力使您的目标达到目标。

enter image description here

你的照片中有三个部分,我将从左到右详细说明:

1. Android Streamer设备

根据我的经验,我可以说由于native support,Android可以很好地通过RTP发送相机流,而将视频转换为FLV会让您头疼。 (在许多情况下,例如,如果以后您想要将流传送到Android设备上。)

所以我建议建立像spyDroid这样的东西。

2.流媒体服务器

Wowza Server 等工具可以获取源流 并将其放在服务器的输出上以供其他客户使用。我猜 VLC也可以通过File - > Stream菜单执行此操作,然后将其放入 来自基于spyDroid的应用程序的RTSP视频流地址。但是我有 没有亲自试过。

实现自己的流媒体服务器也不是一项艰苦的工作。

我会举个例子:

对于HLS服务器的实现,您只需要三件事:

  1. 视频文件,分为10秒MPEG2块。 (即.ts文件)
  2. 块的m3U8播放列表。
  3. 具有简单WebService的Web服务器,通过HTTP将播放列表传送到客户端(PC,Android,iPhone,主要是每个设备)。然后,客户端将查找播放列表文件,并根据他们的时间要求提供适当的块。因为几乎所有玩家都有内置的HLS支持。
  4. 3.客户端

    根据我们的评论,我建议您可能希望深入了解Android视频流。

    要完成这么大的项目,你需要更多的研究。例如,您应该能够区分RTP和RTSP,并了解它们彼此之间的关系。

    阅读我的回答here以了解最先进的视频流,请随时提出更多要求。

    希望你了解未来之旅的全貌,

    祝你好运,玩得开心

答案 1 :(得分:3)

这是一个普遍的问题,但我会尝试给你一个研究方向:

首先,您需要回答几个问题:

1)视频流的性质和目的是什么?是安全应用程序,其中静止图像中的细节是至关重要的(那么你将不得不使用像MJPEG编解码器这样的东西),或者它只能在运动中查看?

2)流源,服务器和客户端是否在同一网络上,以便RTSP可能用于更精确的计时,或者涉及WAN,应该使用像HTTP这样更稳定的东西?

3)同时输出连接的数量是多少?换句话说,是否值得为Wowza transcoding add-on(也可能是nDVR)或Flussonic付费,或者ffserver之类的简单解决方案足够?

简而言之,对于几个观众来说,为了一个廉价而肮脏的解决方案,你可以使用像IP Webcam - >这样的东西。 ffserver - > VLC for Android并避免编写自己的软件。

答案 2 :(得分:-2)

你可以这样处理:

here描述的方式准备相机预览。 Camera对象具有setPreviewCallback方法,您可以在其中注册预览回调。此回调提供YUV格式的数据缓冲区(字节数组),您可以将其传输到服务器。