Playback error
- Dominant language
- Java
- Stars
- 21.9k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
The following error occurs when I play the video.
```
ExoPlayerImplInternal: Playback error
com.google.android.exoplayer2.ExoPlaybackException: Unexpected runtime error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:625)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:263)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaCodec$CodecException: Error 0xffffffed
at android.media.MediaCodec.native_setSurface(Native Method)
at android.media.MediaCodec.setOutputSurface(MediaCodec.java:2145)
at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.setOutputSurface(SynchronousMediaCodecAdapter.java:189)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1373)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutput(MediaCodecVideoRenderer.java:646)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:584)
at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:1566)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:1530)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:1505)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:530)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:263)
at android.os.HandlerThread.run(HandlerThread.java:67)
```
I don't know what. How did it happen.This error occurs when I use preloading.
```
fun preLoadUrl(url: String) {
cacheDataSourceFactory ?: run {
initCacheDataSourceFactory()
}
ExecutorsUtil.networkIO.execute {
val dataSpec = DataSpec.Builder()
.setUri(url)
.setLength((1024 * 1024).toLong())
.build()
try {
CacheWriter(cacheDataSourceFactory!!.createDataSource(), dataSpec, null, null).cache()
} catch (e: Exception) {
e.printStackTrace()
}
}
}
```
```
private var cacheDataSourceFactory: CacheDataSource.Factory? = null
private fun initCacheDataSourceFactory() {
val cacheFile = File(App.Context.cacheDir, "exo_video")
val cache = SimpleCache(
cacheFile, LeastRecentlyUsedCacheEvictor(50 * 1024 * 1024),
StandaloneDatabaseProvider(App.Context)
)
val httpDataSourceFactory = DefaultHttpDataSource.Factory()
.setUserAgent(Util.getUserAgent(App.Context, App.Context.packageName))
.setAllowCrossProtocolRedirects(true)
cacheDataSourceFactory = CacheDataSource.Factory()
.setCache(cache)
.setUpstreamDataSourceFactory(httpDataSourceFactory)
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
}
```
There will be no errors if I don't use preloading.Please help me
Contributor guide
Assessment
This issue has not been assessed yet.