Java Url中的Mp4文件播放时间过长

Java Url中的Mp4文件播放时间过长,java,android,Java,Android,我有一个MP4URL,其中包含400mb的视频。 使用exoplayer,开始播放视频的时间太长(10-15分钟)。 我添加了loadcontrol,但没有任何用处。有人能帮我吗 MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory) .createMediaSource(mUri); // Prepare the player with the sour

我有一个MP4URL,其中包含400mb的视频。 使用exoplayer,开始播放视频的时间太长(10-15分钟)。 我添加了loadcontrol,但没有任何用处。有人能帮我吗

  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=新的DefaultLoadControl( 新的DefaultAllocator(true,16), VideoPlayerConfig.MIN\u缓冲区\u持续时间, VideoPlayerConfig.MAX\u BUFFER\u DURATION, VideoPlayerConfig.MIN\u播放\u开始\u缓冲区, VideoPlayerConfig.MIN\u播放\u恢复\u缓冲区,-1,真)


这可能有多种原因:

1。最大缓冲区持续时间太长

尝试为
VideoPlayerConfig.MAX\u BUFFER\u DURATION
设置一个较低的值(即
30秒

2。您的流媒体视频协议效率低下

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

3。您的internet连接相对较慢


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

这可能有多种原因:

1。最大缓冲区持续时间太长

尝试为
VideoPlayerConfig.MAX\u BUFFER\u DURATION
设置一个较低的值(即
30秒

2。您的流媒体视频协议效率低下

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

3。您的internet连接相对较慢


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

我已经实现了CDN,它工作正常

我已经实现了CDN,它工作正常

您可以添加一些您正在做的代码片段吗?@vs97请检查代码。如果url中有100-200MB的视频,则此代码工作正常。是否可以添加一些您正在执行的操作的代码片段?@vs97请检查代码。如果url中有100-200Mb的视频,则此代码工作正常@Ken 1。我在代码中配置了
VideoPlayerConfig.MAX\u BUFFER\u DURATION
。即
final int MAX_BUFFER_DURATION=50002。我会试试HLS播放器。但我认为它也需要修改url。我有MP4URL。3.我检查了这个场景。但在电话里上网要好得多。在其他应用程序中,如netflix和prime,它正在发挥作用。我不相信改用HLS播放器会解决您的协议问题。我在Android和iOS上看到了带有ExoPlayer的即时视频。它是承载MP4视频的服务器,可能需要提供适当的流媒体协议。解决方案是实现CDN。它可以提供一个url来播放视频编码。感谢谢谢你的回复@ken1。我在代码中配置了
VideoPlayerConfig.MAX\u BUFFER\u DURATION
。即
final int MAX_BUFFER_DURATION=50002。我会试试HLS播放器。但我认为它也需要修改url。我有MP4URL。3.我检查了这个场景。但在电话里上网要好得多。在其他应用程序中,如netflix和prime,它正在发挥作用。我不相信改用HLS播放器会解决您的协议问题。我在Android和iOS上看到了带有ExoPlayer的即时视频。它是承载MP4视频的服务器,可能需要提供适当的流媒体协议。解决方案是实现CDN。它可以提供一个url来播放视频编码。感谢
        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);