【问题标题】:Live video broadcasting视频直播
【发布时间】:2012-07-20 06:26:24
【问题描述】:

我将开发一个基于聊天的移动应用程序,它允许视频聊天。我正在使用 HTML5、javascript 和 PhoneGap。使用phoneGap,我可以访问手机摄像头,捕捉视频,保存视频并将其上传到服务器。我已经为android做了。但我需要视频的现场直播。有什么解决办法吗? 注意:它不是任何安卓原生应用。

【问题讨论】:

  • 我发现一些链接表明 PhoneGap 无法使用 stackoverflow.com/questions/11573920/live-video-broadcasting groups.google.com/forum/#!topic/phonegap/kaK-KtqPnZc 我也在尝试相同类型的应用程序,所以如果您发现请发表评论任何有用的东西。或者尝试使用 Sencha、Titanium 或 Rho mobile。

标签: javascript jquery html cordova html5-video


【解决方案1】:

您没有指定当前用于视频捕获的设施。 AFAIK,当前的 WebView 尚不支持 WebRTC,这是 w3 标准,它将很快使您能够访问 HTML5 代码中的视频帧。所以我假设你正在使用 PhoneGap 的 navigator.device.capture.captureVideo 设施。

在 Android 上,captureVideo 创建 3gp 文件。 3gp 的问题在于它们在捕获时无法流式传输或播放:解析其中的视频帧需要文件的 MOOV atom,并且仅在文件中的所有帧都已编码后才写入。因此,您必须先停止录制,然后才能使用该文件。

在 HTML5 中最好的方法是实现一个循环,捕获一个视频短片(3-5 秒?),然后在捕获下一个块时将其发送到服务器。服务器将需要将剪辑连接到可以通过流服务器广播的单个文件。这将使广播的延迟增加几秒钟,并且您很可能会在两个单独的块捕获之间的间隙处丢失帧。对于某些用例(例如安全摄像头)来说,这可能就足够了。

如果您的应用程序无法承受丢帧,我认为没有其他选择,只能在 Java 中实现视频捕获和流式传输,作为 PhoneGap 插件。

【讨论】:

  • 非常感谢您的回答。现在我要做的是,我正在使用 phonegap,但是每当用户尝试视频通话时,我都会将控制权转移到 android 本机功能。我正在使用 Android Mediarecorder 捕获视频,通过它我可以完全控制录制。但我只能将视频保存在本地文件中。我需要流式传输它。有没有办法做到这一点。我找到了一种解决方案Here。但我还没试过。
  • 任何使用 3GP 或 MP4 作为文件格式的解决方案都将成为直播流媒体的问题,因为这些文件在完成之前无法播放(MOOV atom 需要完成帧偏移信息) .我见过一个项目可以将视频转换为 FLV,这是一种可以实时传输的文件格式:code.google.com/p/ipcamera-for-android - 但请注意,它 (1) 是 GPL 并且 (2) 使用 JNI
【解决方案2】:

见 Spydroid http://code.google.com/p/spydroid-ipcamera/

它使用带有您找到的特殊 FileDescriptor 的解决方案。基本上,他们让视频编码器将带有 H.264 的 .mp4 写入特殊文件描述符,该描述符在写入时调用您的代码。然后他们剥离 MP4 标头并将 H.264 NALU 转换为 RTP 数据包。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2023-04-05
    • 1970-01-01
    • 2013-01-02
    • 2015-03-26
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多