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

时间:2019-10-16 00:06:17

标签: android exoplayer2.x

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

video.mp4audio.mp3都属于video1,并且具有相同的长度,即1:23:34。我可以像使用一台ExoPlayer一样同步播放video.mp4audio.mp3吗?用户必须能够暂停/播放/搜索,并且对两个流都应执行相同的操作。

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

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

1 个答案:

答案 0 :(得分:0)

可以!这是在ExoPlayer by creating a MergingMediaSource中完成的。链接中的示例将视频源与字幕源合并在一起,但是对于音频和视频来说更简单:

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

MergingMediaSource mergedSource = new MergingMediaSource(videoSource, audioSource);