【问题标题】:Exoplayer, play an audio stream and a video stream synchronously?Exoplayer,同步播放音频流和视频流?
【发布时间】:2019-10-16 00:06:17
【问题描述】:

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

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);

【问题讨论】:

    标签: android exoplayer2.x


    【解决方案1】:

    你可以!这是在 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);
    

    【讨论】:

    • 如果我用这个方法同时播放video.mp4audio.mp3,我可以把audio.mp3替换成audio2.mp3 on-the-fly吗?
    猜你喜欢
    • 2020-02-29
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多