【问题标题】:Mp4 file from Url is taking too long to play来自 Url 的 Mp4 文件播放时间过长
【发布时间】:2020-10-26 21:47:39
【问题描述】:

我有一个 mp4 网址,其中包含 400mb 的视频。 使用 exoplayer,开始播放视频需要很长时间(10-15 分钟)。 我添加了负载控制但没有用。有人可以帮帮我吗?

  MediaSource videoSource = new 
  ExtractorMediaSource.Factory(dataSourceFactory)
            .createMediaSource(mUri);
    // Prepare the player with the source.
    Log.d("exo","to be prepare");
    player.prepare(videoSource);
    Log.d("exo","prepared"+videoSource);

    player.setPlayWhenReady(true);
    Log.d("exo","played");

    player.addListener(this);

============================

LoadControl loadControl = new DefaultLoadControl( 新的 DefaultAllocator(true, 16), VideoPlayerConfig.MIN_BUFFER_DURATION, VideoPlayerConfig.MAX_BUFFER_DURATION, VideoPlayerConfig.MIN_PLAYBACK_START_BUFFER, VideoPlayerConfig.MIN_PLAYBACK_RESUME_BUFFER, -1, true);

        BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        TrackSelection.Factory videoTrackSelectionFactory =
                new AdaptiveTrackSelection.Factory(bandwidthMeter);
        TrackSelector trackSelector =
                new DefaultTrackSelector(videoTrackSelectionFactory);
        // 2. Create the player
        player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(this), trackSelector, loadControl);
        videoFullScreenPlayer.setPlayer(player);

【问题讨论】:

  • 能否请您添加一些您正在做什么的代码 sn-ps?
  • @vs97 请检查代码。如果 url 的视频为 100-200mb,则此代码工作正常

标签: java android


【解决方案1】:

这可能有多种原因:

1.最大缓冲时长过大

尝试为VideoPlayerConfig.MAX_BUFFER_DURATION 设置一个较低的值(即30 seconds apparently

2。您的流式视频协议效率不高

这可能与视频编码以及您的网络速度限制有关。我猜视频播放器在播放之前正在加载整个视频,或者至少是其中的一大块)。这就是为什么像“HTTP Live Stream”这样的协议解决了这个问题并导致视频几乎立即播放,因为该协议会发送大量视频,并动态调整带宽。

3.您的互联网连接速度相对较慢

虽然这可能不是主要原因,但可能会影响结果。

【讨论】:

  • 感谢@Ken 的回复1。 我在我的代码中配置了VideoPlayerConfig.MAX_BUFFER_DURATION。那是final int MAX_BUFFER_DURATION = 5000; 2. 我会尝试使用 HLS 播放器。但我认为它也需要修改网址。我有 mp4 网址。 3. 我检查了这个场景。但是手机上网要好得多。在 netflix 和 prime 等其他应用中,它运行良好
  • 我不相信更改为 HLS 播放器会解决您的协议问题。我已经在使用 ExoPlayer 的 Android 和 iOS 上看到了即时加载的视频。托管 MP4 视频的服务器可能需要提供适当的流式传输协议。
  • 解决方案是实现CDN。它可以提供一个 url 来播放视频编码。谢谢!!
【解决方案2】:

我已经实现了 CDN,并且运行良好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2014-10-21
    • 2013-05-17
    相关资源
    最近更新 更多