@@ -2,12 +2,15 @@ package dev.aaa1115910.bv.player.impl.exo
2
2
3
3
import android.content.Context
4
4
import androidx.annotation.OptIn
5
+ import androidx.media3.common.C
5
6
import androidx.media3.common.MediaItem
6
7
import androidx.media3.common.PlaybackException
7
8
import androidx.media3.common.Player
8
9
import androidx.media3.common.util.UnstableApi
9
10
import androidx.media3.datasource.okhttp.OkHttpDataSource
11
+ import androidx.media3.exoplayer.DefaultRenderersFactory
10
12
import androidx.media3.exoplayer.ExoPlayer
13
+ import androidx.media3.exoplayer.Renderer
11
14
import androidx.media3.exoplayer.source.MediaSource
12
15
import androidx.media3.exoplayer.source.MergingMediaSource
13
16
import androidx.media3.exoplayer.source.ProgressiveMediaSource
@@ -37,8 +40,17 @@ class ExoMediaPlayer(
37
40
38
41
@OptIn(UnstableApi ::class )
39
42
override fun initPlayer () {
43
+ val renderersFactory = DefaultRenderersFactory (context).apply {
44
+ setExtensionRendererMode(
45
+ when (options.enableFfmpegAudioRenderer) {
46
+ true -> DefaultRenderersFactory .EXTENSION_RENDERER_MODE_ON
47
+ false -> DefaultRenderersFactory .EXTENSION_RENDERER_MODE_OFF
48
+ }
49
+ )
50
+ }
40
51
mPlayer = ExoPlayer
41
52
.Builder (context)
53
+ .setRenderersFactory(renderersFactory)
42
54
.setSeekForwardIncrementMs(1000 * 10 )
43
55
.setSeekBackIncrementMs(1000 * 5 )
44
56
.build()
@@ -156,9 +168,22 @@ class ExoMediaPlayer(
156
168
resolution: ${mPlayer?.videoSize?.width} x ${mPlayer?.videoSize?.height}
157
169
audio: ${mPlayer?.audioFormat?.bitrate ? : 0 } kbps
158
170
video codec: ${mPlayer?.videoFormat?.sampleMimeType ? : " null" }
159
- audio codec: ${mPlayer?.audioFormat?.sampleMimeType ? : " null" }
160
- """ .trimIndent()
171
+ audio codec: ${mPlayer?.audioFormat?.sampleMimeType ? : " null" } (${getAudioRendererName()} )
172
+ """ .trimIndent().also {
173
+ println (mPlayer?.audioFormat)
174
+ }
175
+ }
176
+
177
+ private fun getAudioRendererName (): String {
178
+ val rendererCount = mPlayer?.rendererCount ? : return " UnknownRenderer"
179
+ for (i in 0 until rendererCount) {
180
+ val renderer = mPlayer!! .getRenderer(i)
181
+ if (renderer.trackType == C .TRACK_TYPE_AUDIO && renderer.state == Renderer .STATE_STARTED ) {
182
+ return renderer.name
183
+ }
161
184
}
185
+ return " UnknownRenderer"
186
+ }
162
187
163
188
override val videoWidth: Int
164
189
get() = mPlayer?.videoSize?.width ? : 0
0 commit comments