将视频从Android摄像机流传输到服务器


286

我已经看到了很多有关如何将视频从服务器流式传输到android设备的信息,但是关于反过来,ala Qik的信息却很少。有人可以在这里向我指出正确的方向,或者给我一些有关如何解决这个问题的建议吗?


9
我也希望看到一个答案。你有什么想出来的吗?
杰里米·怀特2010年

不,放弃了流式传输。仅击败MediaRecorder API提交就足够了。您虽然可以查看sipdroid代码,但它们似乎已经起作用了。
JCL 2010年

视频代码不在Sipdroid来源中,但:(
Donal Rafferty 2010年

1
您可以在ffmpeg中查看ffserver中的组件。
Vinay 2010年

1
我有一个与此相关的问题,您可能也会对此感兴趣。这是关于在完成视频捕获和容器部分处理后将视频流推到3g以上的问题。bit.ly/vYpWGy
迈克尔,

Answers:


123

我主持了一个开源项目,以启用Android手机到IP摄像机:

http://code.google.com/p/ipcamera-for-android

从LocalSocket提取原始视频数据,并在流传输之前首先检查MP4的MDAT MOOV。实况视频以FLV格式打包,并且可以通过具有内置Web服务器的Flash视频播放器进行播放:)


26
单击“源”按钮。另外,谁打败了这个家伙谁也是一个工具。
Nicholi 2011年

3
它给了我错误..像java.lang.UnsatisfiedLinkError:无法加载teaonly:findLibrary返回null。如果有人有解决方案,请共享它。谢谢
anddev

1
@mpp:应用程序具有NDK代码。您可以自己编译它,也可以从该Google Code项目中的“下载”下的apk中获取.so文件。
Turnsole 2012年

1
我也收到java.lang.UnsatisfiedLinkError错误。请简要提及删除该错误的步骤。

1
对于那些不了解UnsatisfiedLinkError的人:您必须使用NDK构建C代码。简单地说,运行ndk-build。有关更多信息,请阅读NDK文档
Paul Lammertsma 2014年

70

花了我一些时间,但是我终于设法制作了一个能够做到这一点的应用程序。如果您有兴趣,请查看google代码页:http : //code.google.com/p/spydroid-ipcamera/ 我在代码中添加了大量评论(主要是查看CameraStreamer.java),因此应该很不言自明。困难的部分实际上是理解RFC 3984并为打包过程实现适当的算法。(根据rfc,此算法实际上将MediaRecorder产生的mpeg4 / h.264流转换为不错的rtp流)

再见


2
非常感谢!目前,我无法使其在h264上正常工作。并且无法将其更改为h263(我不知道如何执行此操作)。无论如何,谢谢!
12

1
我正在使用相同的功能,但是在使用rtsp在Android上进行流式传输时,它说无法播放视频。我正在使用VideoView。你能帮忙吗?
罗希特·曼迪瓦

1
效果很好(到目前为止!),我正在使用它来传输来自Glass的视频(经过一些工作/编辑/修改),但到目前为止,我只能使它与基于Windows的浏览器(Chrome)和vlc插件。Android / iPad或任何其他rtsp播放器上的VLC不会接收流(其中一个看上去不错,但是试图根据设备名称获取流,此代码返回0,因此无法找到)。不过,感谢您在编码一天后获得的结果,非常感谢!
MacD 2014年

@MacD您是否使用spydroid-ipcamera代码(所有项目或仅某些类?您能告诉我吗?)或此库github.com/fyhertz/libstreaming在Google Glass中进行流式传输?非常感谢!!
2014年

嗨,您能解释一下如何在android studio中实现该项目吗?我无法使其运行
utdev

24

我也在研究这个问题,虽然我没有一个好的解决方案,但我确实设法挖掘了SIPDroid的视频代码:

http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java


他们在那里所做的是使用RTP数据包将其流传输到服务器。现在的问题是服务器上正在做什么?什么是转码以及如何进行流传输
Azlam

不,我没有采用SIPDroid方法,这太复杂了。然后我用MJPEGServer做了一些事情
Azlam 2013年

19

我建立了一个名为Kickflip的开源SDK,以使来自Android的流式视频成为一种轻松的体验。

该SDK演示了如何使用Android 4.3的MediaCodec API将设备硬件编码器的数据包直接定向到FFmpeg,以进行RTMP(带有librtmp)或H.264 / AAC的HLS流传输。它还演示了实时OpenGL效果(标题,色度键,淡入淡出)和背景录制。

非常感谢SO,尤其是fadden


它可以流传输到任何支持HLS的客户端(而不是仅流到您的服务器)吗?
4ntoine 2014年

4
@dbro我试图了解您的服务,但是在查看价格之前,您需要输入我的登录信息。就像你们正在收集电子邮件地址一样。如果这不是您的意图,则应提供价格信息:与Parse和App Engine以及许多其他工具一样。
学习者

摄像机是否可以将视频发送到Kickflip,然后转到Android手机?如果哪种摄像机适合这种情况
Lutaaya Huzaifah Idris

11

这是有关将android摄像机视频流式传输到网页的完整文章。

Android将实时摄像头视频流传输到网页

  1. 在Android应用上使用libstreaming
  2. 在服务器端,Wowza Media Engine用于解码视频流
  3. 最终,使用jWplayer在网页上播放视频。

这使用了封闭源组件。有开源替代品吗?
2015年

您可以为此使用JavaCV,我在我的项目中使用它来进行从android设备到wowza媒体服务器的实时流传输,也可以使用github.com/begeekmyfriend/yasea
Chinthaka Devinda

库流媒体免费吗?
Akrramo '18

我们可以使用声卡设备作为输入音频源而不是libstreaming中的麦克风吗?
user2980181

5

我可以将实时摄像头视频从移动设备发送到服务器。使用此链接, 请参阅链接

请参考上面的链接。该链接中有一个示例应用程序。只是您需要在RecordActivity.class中设置服务URL。

例如: ffmpeg_link =“ rtmp:// yourserveripaddress:1935 / live / venkat”;

我们可以使用该链接发送H263和H264类型的视频。


我已经通过上面的链接使用了代码,但是甚至无法开始录制。出现异常“无视频流”。您对此有什么想法吗?
Akhilesh Sk Sk 2013年

@AkhileshSk通过使用以上代码,您可以将实时视频通过rtmp url发送到您的服务器。它不是用于录制目的。如果要录制视频,则需要在服务器端录制。
2014年

嘿@ Venkat是否可以将摄像头的实时视频发送到Android手机,您是否有一些代码链接,例如使用Youtube live等
Lutaaya Huzaifah Idris

@LutaayaHuzaifahIdris是可能的。我以前从事过此工作。
Venkat

嗨@Venkat,您能帮我解决这个问题吗,找不到RecordActivity.class文件
sanyam


1

检查Yasea图书馆

Yasea是一个Android流客户端。它将来自摄像机和麦克风的YUV和PCM数据编码为H.264 / AAC,封装在FLV中并通过RTMP传输。

特征:

  1. Android mini API 16。
  2. H.264 / AAC硬编码。
  3. H.264软编码。
  4. 带状态回调处理程序的RTMP流。
  5. 纵向和横向动态定位。
  6. 前后摄像头热开关。
  7. 流式传输时录制到MP4。

0

Mux(我的公司)有一个开源Android应用程序,可将RTMP流传输到服务器,包括设置摄像头和用户交互。它被构建为流传输到Mux的实时流API,但可以轻松地流到任何RTMP入口点。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.