android - 在 Android 中实现 HTTP 实时视频流最有效的方法是什么?

标签 android http-live-streaming exoplayer mpeg-dash

在过去的一个月里,我一直在互联网上搜索如何实现从 Android 上的应用程序录制实时视频并将其发送到服务器,但我研究得越多,我就越感到困惑。

首先,我正在寻找一种将来也可以用于 iOS 的流媒体协议(protocol),因此我得出的结论是 DASH(基于 HTTP 的动态自适应流媒体)是理想的选择解决方案。 此外,最近的Android框架ExoPlayer也支持此功能。 此外,我不想使用WOWZA这样的直播引擎。

其次,根据我的研究,我还得出结论,任何 HTTP 服务器都可以用来接收数据“ block ”,但我必须有一个流服务器才能将视频流式传输回用户。 我相信这个过程相当复杂,但在成功实现之前我不会放弃。

最后,我的问题是,我应该使用什么服务器、协议(protocol)才能实现这一目标?如何直接转换视频并发送到服务器?

最佳答案

查看您有关协议(protocol)和服务器的问题:

  • “ future 也可用于 iOS 的流媒体协议(protocol)”

这可能取决于你所说的“ future ”是什么意思。目前,Apple 要求您在 iOS 上使用 HLS 来播放移动网络(蜂窝网络)上超过 10 分钟的任何视频。 DASH 正在将自己确立为行业标准,因此这种情况可能会发生变化,苹果也可能会接受它,但如果您在不久的将来需要某些东西,您可能需要计划支持 DASH 和 HLS。

  • 您应该使用什么服务器进行流式传输

流媒体视频非常复杂,并且领域正在快速变化,因此如果可以的话,使用或构建专用流媒体服务器确实是件好事。这些通常具有将输入视频转换为您需要的不同格式和比特率的机制和/或记录良好的程序,具体取决于您的覆盖范围和用户体验目标。 Reach 将确定您需要的不同编码、支持不同编码的不同浏览器和设备,如果您希望用户获得良好的体验,避免缓冲,您还需要每种格式的多个比特率版本 - 这允许 DASH 和 HLS 提供自适应比特率流式传输 (ABR),这意味着客户端可以根据网络条件在任何给定时间选择最佳比特率。视频操作(尤其是转码)是一项 CPU 密集型任务,因此专用流媒体服务器软件的另一个优点是应尽可能对其进行优化,以减少服务器负载。

如果您确实决定采用流媒体服务器路线,那么还有开源替代方案,以及您上面提到的 Wowza,例如:

这些插件有支持 ABR 等 - 如果您搜索“GStreamer 流媒体服务器 ABR”,您会发现一些关于设置此功能的好博客。

关于android - 在 Android 中实现 HTTP 实时视频流最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963571/

相关文章:

ios - dyld 未找到 AVAssetDownladTask

android - 如何在 android 中实现 Exoplayer 2.11.1?

android - 使用 exoplayer 从 azure 媒体服务获取 Widevine 离线许可证

android - 嵌套的 CollectionViews 和显示(使用 Visual Studio 2019、Xamarin XPlatform Android)

windows - AVPlayer 在 tvOS 13.4 上使用 HLS 直播流 url 失败(适用于 tvOS 13.3)

android - 如何在 Nativescript 中正确获取 Android Application Context

http-live-streaming - 将段与绝对日期和时间相关联(相当于 DASH 的 PROGRAM-DATE-TIME)

android - 我可以将 exoplayer 缓冲数据发送到其他 Activity exoplayer

android - Xamarin Forms Android Pie 在应用程序后台 sleep 模式下无法获取当前位置

android - Okhttp Put 方法返回 'Method Not Allowed'