我想更新 playstore 中的一个旧应用程序(将近 3 年)。除了这个 ExoPlayer 库之外,我已经修复了不推荐使用的代码和库。我遵循了这个tutorial并且它没有问题。但是当我使用我的实际 mp3/mp4 文件时,我遇到了一个对我来说是新的错误。我已经在互联网上搜索过这个问题,但没有运气。
这是我的代码
private lateinit var binding: PlayerActivityBinding
private var exoPlayer: ExoPlayer? = null
private var playbackPosition = 0L
private var playWhenReady = true
// some override ...
private fun preparePlayer() {
exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer?.playWhenReady = true
binding.playerView.player = exoPlayer
val defaultHttpDataSourceFactory = DefaultHttpDataSource.Factory()
val mediaItem = MediaItem.fromUri(URL)
val mediaSource =
DashMediaSource.Factory(defaultHttpDataSourceFactory).createMediaSource(mediaItem)
exoPlayer?.setMediaSource(mediaSource)
exoPlayer?.seekTo(playbackPosition)
exoPlayer?.playWhenReady = playWhenReady
exoPlayer?.prepare()
}
private fun releasePlayer(){
exoPlayer?.let { player ->
playbackPosition = player.currentPosition
playWhenReady = player.playWhenReady
player.release()
exoPlayer = null
}
}
companion object{
const val URL =
"https://bitmovin-a.akamaihd.net/content/MI201109210084_1/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd"
}
我的实际媒体文件 http://mgb-sda-lyrics.com/media_files/10000_reasons_blessed_the_lord.mp3
这里是例外
V/FA: Recording user engagement, ms: 4488
V/FA: Activity paused, time: 213679361
V/FA: onActivityCreated
D/mgb.com.sdalyricsplus.newActivities.NewKaraokePage: onCreate: *******************************************
I/ExoPlayerImpl: Init d76898c [ExoPlayerLib/2.18.4] [2027, V2032, vivo, 31]
V/FA: Activity resumed, time: 213679574
I/XDR::VRT: sc is not valid!
V/ImeFocusController: onWindowFocus: DecorView@95743fd[NewKaraokePage] softInputMode=STATE_UNSPECIFIED|ADJUST_PAN|IS_FORWARD_NAVIGATION
D/ImeFocusController: onViewFocusChanged, view=DecorView@95743fd[NewKaraokePage], mServedView=null
V/ImeFocusController: checkFocus: view=null next=DecorView@95743fd[NewKaraokePage] force=false package=<none>
D/OpenGLRenderer: endAllActiveAnimators on 0xb4000078f8ab1290 (CardView) with handle 0xb4000078089fcab0
E/ExoPlayerImplInternal: Playback error
com.google.android.exoplayer2.ExoPlaybackException: Source error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:644)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:614)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:334)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.ParserException
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:112)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:66)
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:176)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @4:363 in java.io.InputStreamReader@f6ba349)
at com.android.org.kxml2.io.KXmlParser.readEntity(KXmlParser.java:1220)
at com.android.org.kxml2.io.KXmlParser.readValue(KXmlParser.java:1402)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:393)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:104)
at com.google.android.exoplayer2.source.dash.manifest.DashManifestParser.parse(DashManifestParser.java:66)
at com.google.android.exoplayer2.upstream.ParsingLoadable.load(ParsingLoadable.java:176)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
摇篮
implementation 'com.google.android.exoplayer:exoplayer:2.18.4'
implementation 'androidx.media3:media3-exoplayer-ima:1.0.0'
implementation 'com.google.android.exoplayer:extension-ima:2.18.4'
请注意,旧版本的 exoplayer 正在处理我实际的 mp3 文件。但在这个最新版本中,它不会。