首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android应用程序上播放来自媒体服务器的Live流

在android应用程序上播放来自媒体服务器的Live流
EN

Stack Overflow用户
提问于 2021-05-31 15:30:49
回答 1查看 1.3K关注 0票数 0

我的设置如下:

  • OBS Studio创建视频提要
  • Ant Media Server分发流

现在我正在构建一个显示这个流的应用程序,我目前正在使用ExoPlayer,但是我很难让它同时用于RTMP和HLS,我读到了一些我可以在我的应用程序中嵌入一个网络播放器的地方,这会更容易吗?下面是我的ExoPlayer代码:

代码语言:javascript
复制
 //RTMP Url
    String url = "rtmp://192.168.1.244/WebRTCApp/379358104902020985845622";
    
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory =
            new AdaptiveTrackSelection.Factory();
    TrackSelector trackSelector =
            new DefaultTrackSelector(videoTrackSelectionFactory);
    SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);

    PlayerView playerView = findViewById(R.id.simple_player);

    playerView.setPlayer(player);

    /*
      Create RTMP Data Source
     */

    RtmpDataSourceFactory rtmpDataSourceFactory = new RtmpDataSourceFactory();


    MediaSource videoSource = new ExtractorMediaSource.Factory(rtmpDataSourceFactory)
            .createMediaSource(Uri.parse(url));

    player.prepare(videoSource);

    player.setPlayWhenReady(true);

如果能在这方面提供任何帮助,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-04 17:16:44

大多数在线视频流使用自适应比特率流(ABR)协议来传输视频,主要是HSL和DASH。

大多数媒体播放器,如ExoPlayer,都很好地支持这些协议,尽管它们是复杂和不断发展的协议,因此总是存在边缘情况。

许多视频会议应用程序都使用WebRTC,这是一种实时优化的协议--通常的方法是使用WebRTC客户端来处理这种流。

从流延迟的角度来看,这两种方法在非常的较高级别上的区别是:

  • ABR协议优先考虑质量和避免中断,并对视频进行足够的缓冲,以避免不间断播放。他们通常是针对电影和现场视频流服务。即使对于低延迟实现,延迟也是以多秒或更长的时间来测量的。

  • WebRTC在必要时优先考虑延迟和牺牲质量。它的目标通常是实时敏感的应用,如视频会议,重要的是不要落后于讨论,即使这意味着暂时的视频故障,甚至短暂的视频中断。延迟通常以秒为单位。

任何媒体服务器都来自WebRTC端,尽管最近的版本支持HLS、/CMAF和低延迟破折号(如上所述,这些延迟仍然比WebRTC高)。

对于您的服务,如果您能够使用一个破折号或HLS流,您可能会发现这是一个更容易使用ExoPlayer的路径。例如,如果您查看演示应用程序,您将看到破折号和HLS流,但没有RTMP流。您可以轻松地扩展或修改演示应用程序来播放您自己的HLS或DASH流,这通常是一种简单的启动方式--查看资产/media.exolist.json中的示例材料,并添加您自己的URL:

但是,如果这是您喜欢的路由,ExoPlayer也应该通过扩展来支持RTMP --有一个特定的扩展允许这样做:

理论上,您只需将此依赖项添加到应用程序中:

如果您的应用程序使用DefaultDataSource或DefaultDataSourceFactory,添加对RTMP流的支持就像向RTMP扩展添加依赖项一样简单。

值得检查该存储库中的问题列表,以了解最近的问题和/或解决方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67776598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档