首页 > 解决方案 > Android Exoplayer 播放 UDP 流无音频

问题描述

我是 android webview 的新手,我使用 exoplayer 在 android webview 中播放视频,我播放了 2 个类别的视频,第一个 mp4,运行良好。第二个流媒体(单播 m3u8 和 UDP)视频播放良好但没有音频,我尝试在流 vlc 中播放源有音频,

这是我的代码。

private void initializePlayerMulticast(Uri mUri) {
        Toast.makeText(ExoPlayer.this, "Hello bro multicast woi hehee", Toast.LENGTH_LONG).show();

        player = ExoPlayerFactory.newSimpleInstance(this);
        UdpDataSource.Factory test = buildDataSourceFactory();
        ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
        ExtractorMediaSource mediaSource = new ExtractorMediaSource
                .Factory(test)
                .setExtractorsFactory(extractorsFactory)
                .createMediaSource(mUri);
        videoView.setPlayer(player);
        player.prepare(mediaSource);
        player.setPlayWhenReady(true);
    }

    private DataSource.Factory buildDataSourceFactory() {
        return new UdpDataSource.Factory() {
            @Override
            public DataSource createDataSource() {
                return new UdpDataSource(5000, 100000);
            }
        };
    }

对不起英语不好..

标签: androidudpstreamingexoplayer2.xunicast

解决方案


您可以使用以下代码播放 .m3u8 文件:-

Handler mHandler = new Handler();

String userAgent = Util.getUserAgent(context, "APP_NAME");

DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(
                userAgent, null,
                DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
                1800000,
                true);

HlsMediaSource mediaSource = new HlsMediaSource(Uri.parse(mediaUrl),dataSourceFactory, 1800000,mHandler, null);

if (mediaUrl != null) {
    videoPlayer.prepare(mediaSource);
    videoPlayer.setPlayWhenReady(true);
}

推荐阅读