Comments (4)
That error is coming from the framework AudioTrack
saying it does not support the values that you try to set. See JavaDoc here.
I guess this does not happen if you do not set setEnableAudioTrackPlaybackParams
to true. Can you confirm?
from media.
Before my setting, the log:
Log.d(TAG, "setPlaybackParams speed=$speed pitch=${playbackParameters.pitch}")
shows: pitch is always 1.0. I tried speed from 0.5 to 2.5, and it doesn't matter what number it is, always got the exception.
If you look at the stacktrace, when I set say speed=1.5, somewhere in the call stack to AudioTrack the number got messed up.
As mentioned in the report, I tested my code on other Android devices, the problem didn't happen. It only happens with my S21 Android 14 device.
And in my code, setEnableAudioTrackPlaybackParams was not called.
I tried to specifically calling setEnableAudioTrackPlaybackParams with:
exoPlayer = ExoPlayer.Builder(context, DefaultRenderersFactory(context).setEnableAudioTrackPlaybackParams(false)) .setTrackSelector(trackSelector) .setLoadControl(loadControl.build()) .build()
And the issue is the same.
from media.
Thanks! Can you shed some more light on the configuration under which you are seeing this warning?
- Is
setEnableAudioTrackPlaybackParams
set to true? - Is the player playing in offload mode when you see this warning?
- Have you applied some specific customization to buffer sizes when you see this warning?
The easiest way for us to help is with the ExoPlayer demo app. You are saying above it is not reproducible there. Can you explain why or how we can repro in the demo app? The question is again pointing towards whether you have some specific setup of the player that isn't applied in the demo app, else the demo app could repro this as well.
from media.
Ok, it has to do with offload.
I built the player with:
val audioOffloadPreferences = AudioOffloadPreferences.Builder()
.setAudioOffloadMode(AudioOffloadPreferences.AUDIO_OFFLOAD_MODE_ENABLED)
.setIsGaplessSupportRequired(true)
.build()
exoPlayer = ExoPlayer.Builder(context, DefaultRenderersFactory(context))
.setTrackSelector(trackSelector)
.setLoadControl(loadControl.build())
.build()
exoPlayer.setSeekParameters(SeekParameters.EXACT)
exoPlayer.trackSelectionParameters = exoPlayer.trackSelectionParameters
.buildUpon()
.setAudioOffloadPreferences(audioOffloadPreferences)
.build()
So that has the problem.
Now I changed it to:
val audioOffloadPreferences = AudioOffloadPreferences.Builder()
.setAudioOffloadMode(AudioOffloadPreferences.AUDIO_OFFLOAD_MODE_ENABLED) // Add additional options as needed
.setIsGaplessSupportRequired(true)
.setIsSpeedChangeSupportRequired(true)
.build()
exoPlayer = ExoPlayer.Builder(context, DefaultRenderersFactory(context))
.setTrackSelector(trackSelector)
.setLoadControl(loadControl.build())
.build()
exoPlayer.setSeekParameters(SeekParameters.EXACT)
exoPlayer.trackSelectionParameters = exoPlayer.trackSelectionParameters
.buildUpon()
.setAudioOffloadPreferences(audioOffloadPreferences)
.build()
by adding setIsSpeedChangeSupportRequired, then the exception doesn't occur, and play speed is set correctly on the S21.
Anyhow, if anyone wants to check about the program, my project Podcini is open source at https://github.com/XilinJia/Podcini.
from media.
Related Issues (20)
- No documentation for how to use ProgressiveMediaSource HOT 2
- OOM probably due to bad file
- Playback speed doesn't work on some devices with Audio Offload Enabled HOT 2
- How to pass the tag in MediaItem to the customData of DataSpec?
- Android Auto Grid Layout with Media3 HOT 4
- Exoplayer.release did not free memory? Is it a Known issues??2.11.8 and 2.19.1
- Exoplayer does not resume once the Ad creative load is blocked via Charles HOT 3
- "Session ID must be unique. ID=" when building a session HOT 4
- Rename setShowPlayButtonIfPlaybackIsSuppressed in MediaSession.Builder
- Media3 exo player controls position in a horizontal tab HOT 1
- Controlls position in a horizontal orientation with RESIZE_MODE_FILL HOT 4
- Add charles/fiddler... proxy block when playing hls media
- Player does not upscale LL Stream once it get to lowest resolution HOT 6
- Video is cut on the edge when using Compose and uses RESIZE_MODE_ZOOM - Only Android 14 HOT 12
- [CMCD] Too many buffer starvation reports HOT 10
- Equalizer support
- ERROR_CODE_IO_UNSPECIFIED error on HLS stream HOT 11
- TTML subtitles - Opacity not compliant with TTML specification HOT 6
- [Transformer] Overlay rotation around the X and Y axles HOT 3
- How to set defaultPositionUs of a Window in the Timeline? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from media.