Exoplayer,同步播放音频流和视频流?
Exoplayer, play an audio stream and a video stream synchronously?
我正在使用以下代码播放流(同时包含视频和音频)。但是,如果我同时想要一个视频流和视频流的单独音频流怎么办?例如,假设有
video.mp4
和audio.mp3
都属于video1
并且长度相同,1:23:34。我可以使用一个 ExoPlayer 同步播放 video.mp4
和 audio.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);
我正在使用以下代码播放流(同时包含视频和音频)。但是,如果我同时想要一个视频流和视频流的单独音频流怎么办?例如,假设有
video.mp4
和audio.mp3
都属于video1
并且长度相同,1:23:34。我可以使用一个 ExoPlayer 同步播放 video.mp4
和 audio.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);