首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Exoplayer;将ConcatenatingMediaSource与音轨合并?

Exoplayer;将ConcatenatingMediaSource与音轨合并?
EN

Stack Overflow用户
提问于 2017-10-31 13:24:38
回答 1查看 1.1K关注 0票数 1

我有一个HLS urls列表,我需要连续使用系外玩家2。这不是问题:

代码语言:javascript
运行
复制
val mediaSources = arrayOfNulls<MediaSource>(videoModel.Clips.size)
for (i in videoModel.Clips.indices) {
    mediaSources[i] = buildVideoSource(videoModel.Clips.get(i).StreamUrl)
}
val videoSource = if (mediaSources.size == 1) mediaSources[0] else ConcatenatingMediaSource(*mediaSources)

这里的问题是,我需要静音这些视频,并播放一个mp3音频轨道,而不是背景曲调。我该怎么做?我想我只需要一个这样的MergingMediaSource:

代码语言:javascript
运行
复制
val audioSource = buildAudioSource()
val mergedSource = MergingMediaSource(videoSource, audioSource)
player!!.prepare(videoSource)

但这会引发以下错误:由于源的句点不同,合并失败。

代码语言:javascript
运行
复制
Source error:
com.google.android.exoplayer2.source.MergingMediaSource$IllegalMergeException
   at com.google.android.exoplayer2.source.MergingMediaSource.checkTimelineMerges(MergingMediaSource.java:169)
   at com.google.android.exoplayer2.source.MergingMediaSource.handleSourceInfoRefreshed(MergingMediaSource.java:144)
   at com.google.android.exoplayer2.source.MergingMediaSource.access$000(MergingMediaSource.java:34)
   at com.google.android.exoplayer2.source.MergingMediaSource$1.onSourceInfoRefreshed(MergingMediaSource.java:102)
   at com.google.android.exoplayer2.source.ConcatenatingMediaSource.handleSourceInfoRefreshed(ConcatenatingMediaSource.java:142)
   at com.google.android.exoplayer2.source.ConcatenatingMediaSource.access$000(ConcatenatingMediaSource.java:34)
   at com.google.android.exoplayer2.source.ConcatenatingMediaSource$1.onSourceInfoRefreshed(ConcatenatingMediaSource.java:81)
   at com.google.android.exoplayer2.source.hls.HlsMediaSource.onPrimaryPlaylistRefreshed(HlsMediaSource.java:142)
   at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker.onPlaylistUpdated(HlsPlaylistTracker.java:385)
   at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker.access$1200(HlsPlaylistTracker.java:41)
   at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker$MediaPlaylistBundle.processLoadedPlaylist(HlsPlaylistTracker.java:590)
   at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker$MediaPlaylistBundle.onLoadCompleted(HlsPlaylistTracker.java:539)
   at com.google.android.exoplayer2.source.hls.playlist.HlsPlaylistTracker$MediaPlaylistBundle.onLoadCompleted(HlsPlaylistTracker.java:472)
   at com.google.android.exoplayer2.upstream.Loader$LoadTask.handleMessage(Loader.java:383)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.os.HandlerThread.run(HandlerThread.java:61)

我有两个问题:

  1. 我如何静音传入的HLS流?为了节省数据的使用,我最好不要加载音频。
  2. 如何在ConcatenatingMediaSource下播放单独的音轨?
EN

回答 1

Stack Overflow用户

发布于 2017-10-31 13:57:15

你可以禁用音频,在exo演示应用程序中,您可以选择音频按钮并选择禁用。您可以看到演示代码来查看如何禁用音频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47036572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档