Exoplayer,同步播放音频流和视频流?

Exoplayer, play an audio stream and a video stream synchronously?

我正在使用以下代码播放流(同时包含视频和音频)。但是,如果我同时想要一个视频流和视频流的单独音频流怎么办?例如,假设有

video.mp4audio.mp3都属于video1并且长度相同,1:23:34。我可以使用一个 ExoPlayer 同步播放 video.mp4audio.mp3 吗?用户必须能够 pause/play/seek,并且应该对两个流应用相同的操作。

如果没有,我必须使用两个 ExoPlayer,一个用于视频,一个用于音频,如何同步音频和视频?

    var uri = Uri.parse(url);
    var df = DefaultHttpDataSourceFactory(url);
    var ms = ExtractorMediaSource(uri, df, DefaultExtractorsFactory(), null, null);
    exoPlayer.playWhenReady=true;
    exoPlayer.prepare(ms);

可以!这是在 ExoPlayer by creating a MergingMediaSource 中完成的。 link中的示例将视频源与字幕源合并,但对于音频和视频更容易:

MediaSource videoSource = new ProgressiveMediaSource.Factory(...)
    .createMediaSource(videoUri);
MediaSource audioSource = new ProgressiveMediaSource.Factory(...)
    .createMediaSource(audioUri);

MergingMediaSource mergedSource = new MergingMediaSource(videoSource, audioSource);