【问题标题】:I am trying To play video using Firebase but it show me DefaultHttpDataSourceFactory is Deprecated我正在尝试使用 Firebase 播放视频,但它显示 DefaultHttpDataSourceFactory 已弃用
【发布时间】:2021-05-25 05:14:58
【问题描述】:

[我提供了图片链接请看图片我有很多错误1private void initializeExoplayerView(String videoUrl) {

试试{ BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter.Builder(this).build(); TrackSelector trackSelector = new DefaultTrackSelector(this,newAdaptiveTrackSelection.Factory(bandwidthMeter)); exoPlayer = (SimpleExoPlayer) ExoPlayerFactory.newSimpleInstance(this, trackSelector); uri videouri = Uri.parse(videoUrl);

        DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
        ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
        MediaSource mediaSource = new ExtractorMediaSource(videouri, dataSourceFactory, extractorsFactory, null, null);
        exoPlayerView.setPlayer(exoPlayer);
        exoPlayer.prepare(mediaSource);
        exoPlayer.setPlayWhenReady(true);

    } catch (Exception e){
        Log.e("TAG", "Error : " + e.toString());
    }
}

【问题讨论】:

    标签: android firebase google-cloud-firestore exoplayer


    【解决方案1】:

    您应该为 HTTP 数据源使用新的工厂,而不是“DefaultHttpDataSource.Factory”。

    https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.Factory.html

    您可以在测试和演示代码中的 ExoPlayer GitHub 存储库中找到它的使用示例 - 例如,如果您查看下面的摘录并按照它的调用进行操作:

    public void start_playlistCanBlockReloadLowLatencyFullSegment_correctMsnAndPartParams()
          throws IOException, TimeoutException, InterruptedException {
        List<HttpUrl> httpUrls =
            enqueueWebServerResponses(
                new String[] {
                  "/master.m3u8",
                  "/media0/playlist.m3u8",
                  "/media0/playlist.m3u8?_HLS_msn=14&_HLS_part=0"
                },
                getMockResponse(SAMPLE_M3U8_LIVE_MASTER),
                getMockResponse(SAMPLE_M3U8_LIVE_MEDIA_CAN_BLOCK_RELOAD_LOW_LATENCY_FULL_SEGMENT),
                getMockResponse(SAMPLE_M3U8_LIVE_MEDIA_CAN_BLOCK_RELOAD_LOW_LATENCY_FULL_SEGMENT_NEXT));
    
        List<HlsMediaPlaylist> mediaPlaylists =
            runPlaylistTrackerAndCollectMediaPlaylists(
                new DefaultHttpDataSource.Factory(),
                Uri.parse(mockWebServer.url("/master.m3u8").toString()),
                /* awaitedMediaPlaylistCount= */ 2);
    

    来自:https://github.com/google/ExoPlayer/blob/0ba317b1337eaa789f05dd6c5241246478a3d1e5/library/hls/src/test/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTrackerTest.java

    【讨论】:

    • 我收到此错误,无法解析构造函数“Factory(com.google.android.exoplayer2.upstream.BandwidthMeter)”我收到此错误,“Factory”是抽象的;无法实例化
    • 如果没有更新的代码,很难发表评论,但最简单的方法可能是让您查看其使用的一些工作示例 - 答案已使用 ExoPlayer 存储库本身的示例进行更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    相关资源
    最近更新 更多