将视频从 Android 相机流式传输到服务器 [关闭]
Posted
技术标签:
【中文标题】将视频从 Android 相机流式传输到服务器 [关闭]【英文标题】:Streaming video from Android camera to server [closed] 【发布时间】:2011-02-02 19:08:48 【问题描述】:我已经看到很多关于如何将视频从服务器流式传输到 android 设备的信息,但关于其他方式(ala Qik)的信息并不多。有人可以在这里为我指出正确的方向,或者就如何解决这个问题给我一些建议吗?
【问题讨论】:
我也想看到这个问题的答案。你有什么想法吗? 不,放弃了流媒体。仅仅击败 MediaRecorder API 就足够了。不过,您可以查看 sipdroid 代码,他们似乎已经开始工作了。 视频代码不在 Sipdroid 在线源中:( 你可以在ffmpeg中查看ffserver一个组件。 我有一个与此相关的问题,您可能也会感兴趣。这是关于在完成视频捕获和容器部分后将视频流推送到 3g 上。 bit.ly/vYpWGy 【参考方案1】:我已经主持了一个开源项目来启用 Android 手机到 IP 摄像头:
http://code.google.com/p/ipcamera-for-android
从 LocalSocket 获取原始视频数据,并在流式传输之前首先检查 MP4 的 MDAT MOOV。直播视频采用 FLV 格式打包,可以通过内置网络服务器的 Flash 视频播放器播放 :)
【讨论】:
它给了我错误.. 像 java.lang.UnsatisfiedLinkError: 无法加载 teaonly: findLibrary 返回 null.. 如果有人有解决方案,请分享。谢谢 @mpp:该应用有 NDK 代码。您可以自己编译它,或者从“下载”下该 Google 代码项目中的 apk 中获取 .so 文件。 为什么不上传.so文件到libs文件夹 我也收到 java.lang.UnsatisfiedLinkError 错误。请简要说明消除该错误的步骤。 对于那些不了解 UnsatisfiedLinkError 的人:您必须使用 NDK 构建 C 代码。简单地说,运行ndk-build
。欲了解更多信息,read the NDK documentation。【参考方案2】:
Mux(我的公司)有一个open source android app,可以将 RTMP 流式传输到服务器,包括设置摄像头和用户交互。它是为流式传输到 Mux 的实时流式传输 API 而构建的,但可以轻松地流式传输到任何 RTMP 入口点。
【讨论】:
【参考方案3】:检查Yasea库
Yasea 是一款 Android 流媒体客户端。它对来自的 YUV 和 PCM 数据进行编码 摄像头和麦克风转H.264/AAC,封装在FLV中传输 通过 RTMP。
特点:
-
Android 迷你 API 16。
H.264/AAC 硬编码。
H.264 软编码。
带有状态回调处理程序的 RTMP 流。
纵向和横向动态定位。
前后摄像头热切换。
流式传输时录制到 MP4。
【讨论】:
【参考方案4】:这是关于将 android 相机视频流式传输到网页的完整文章。
Android Streaming Live Camera Video to Web Page
-
在安卓应用上使用libstreaming
在服务器端Wowza Media Engine用于解码视频流
最后jWplayer用于在网页上播放视频。
【讨论】:
这使用闭源组件。任何开源替代品? 您可以为此使用 JavaCV 我在我的项目中使用它来进行从 android 设备到 wowza 媒体服务器的实时流式传输,您也可以使用 github.com/begeekmyfriend/yasea 库流是免费的吗? 我们可以使用声卡设备作为输入音频源,而不是 libstreaming 中的麦克风。【参考方案5】:我已经构建了一个名为 Kickflip 的开源 SDK,让来自 Android 的流媒体视频体验变得轻松自如。
SDK 演示了如何使用 Android 4.3 的 MediaCodec API 将设备硬件编码器的数据包直接定向到 FFmpeg,以用于 RTMP(使用 librtmp)或 HLS 流式传输 H.264 / AAC。它还演示了实时 OpenGL 效果(标题、色度键、淡入淡出)和背景录制。
感谢 SO,尤其是 fadden。
【讨论】:
它可以流式传输到任何支持 HLS 的客户端(不仅仅是您的服务器)吗? @dbro 我想了解您的服务,但您需要我的登录信息才能看到您的定价。就好像你们在收集电子邮件地址一样。如果这不是您的意图,您应该提供定价信息:就像 Parse 和 App Engine 以及许多其他人所做的那样。 摄像机是否可以将视频发送到 Kickflip,然后再发送到 Android 手机? if es 哪种类型的摄像机适合这个【参考方案6】:我可以将实时摄像头视频从手机发送到我的服务器。使用此链接 see the link
请参阅上面的链接。该链接中有一个示例应用程序。只需要在 RecordActivity.class 中设置你的服务 url。
例如: ffmpeg_link="rtmp://yourserveripaddress:1935/live/venkat";
我们可以使用该链接发送 H263 和 H264 类型的视频。
【讨论】:
我已经使用上面链接的代码,但甚至无法开始录制。得到一个例外“没有视频流”。你对此有什么想法吗? @AkhileshSk 通过使用上面的代码,您可以通过 rtmp url 将实时视频发送到您的服务器。它不是用于记录目的。如果你想录制视频,你需要在服务器端录制。 嘿@Venkat 是否可以将实时视频从相机发送到 Android 手机,您是否有一些代码链接,例如使用 Youtube live 等 @LutaayaHuzaifahIdris 是的,这是可能的。我以前做过这方面的工作。 嗨@Venkat 你能帮我解决这个问题吗,找不到 RecordActivity.class 文件【参考方案7】:根据您的预算,您可以使用可以将图像发送到服务器的 Raspberry Pi 相机。我在这里添加了两个教程,您可以在其中找到更多详细信息:
本教程向您展示how to use a Raspberry Pi Camera 并在 Android 设备上显示图像
这是第二个教程,您可以在其中找到有关real-time video streaming between camera and android device的系列教程
【讨论】:
脱离上下文【参考方案8】:花了我一些时间,但我终于设法制作了一个可以做到这一点的应用程序。如果您有兴趣,请查看 google 代码页:http://code.google.com/p/spydroid-ipcamera/ 我在我的代码中添加了大量的 cmets(主要是看 CameraStreamer.java),所以它应该是不言自明的。 困难的部分实际上是理解 RFC 3984 并为打包过程实施适当的算法。 (根据 rfc,这个算法实际上将 MediaRecorder 产生的 mpeg4/h.264 流变成了一个不错的 rtp 流)
再见
【讨论】:
非常感谢!目前我无法使其与 h264 一起正常工作。我无法将其更改为 h263(我不知道如何做到这一点)。无论如何,谢谢伙计! 我使用的是相同的,但是在使用 rtsp 在 Android 上进行流式传输时,它说视频无法播放。我正在使用视频视图。你能帮忙吗? 效果很好(到目前为止!)我正在使用它从 Glass 流式传输视频(经过一些工作/编辑/弄清楚),但到目前为止我只能从一个带有 vlc 插件的基于 Windows 的浏览器 (Chrome)。 Android/iPad 或任何其他 rtsp 播放器上的 VLC 不会接收流(其中一个看起来不错,但试图根据设备名称获取流,此代码返回为 0,因此无法找到)。尽管如此,多亏了你,在一天的编码后得到了结果,太棒了! @MacD 你是使用 spydroid-ipcamera 代码(所有项目还是只有一些类?你能告诉我吗?)或这个库github.com/fyhertz/libstreaming 在 Google Glass 中流式传输?非常感谢!! 嗨,你能解释一下如何在 android studio 中实现这个项目,我无法让它运行【参考方案9】:我也在研究这个问题,虽然我没有为你提供好的解决方案,但我确实设法挖掘了 SIPDroid 的视频代码:
http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java
【讨论】:
他们在那里所做的是他们使用 RTP 数据包流式传输到服务器。现在的问题是服务器上正在做什么?转码是什么以及如何流式传输 不.. 我没有选择 SIPDroid 方法,它太复杂了.. 然后我用 MJPEGServer 做了一些事情以上是关于将视频从 Android 相机流式传输到服务器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将实时视频从 Raspberry Pi 流式传输到我的 Android 应用程序,但出现安全异常
Android - 将视频从摄像头流式传输到另一个Android设备
将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式