I have a system decoding MP3 audio with MediaExtractor, converting it with MediaCodec and playing it with AudioTrack. On most devices it works fine, but on the Samsung Galaxy S3 and Samsung Galaxy Tab, some users report extremely slow audio playback. I can't reproduce it on an emulator or physical devices.
Android AudioTrack extremely slow on some devices
677 views Asked by Tad At
1
There are 1 answers
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in ANDROID-MEDIACODEC
- Android mediacodec avc/h264 encoder always produces 1MB output buffer size
- Encoding bitmap to video using MediaCodec and Kotlin
- Android record video from multiple cameras and composite the multiple videos into one video
- How to set Mode of H263 when use MediaCodec in Android?
- MediaCodec Pcm to Aac, missing the last 50ms of data
- How can I convert output buffer of MediaCodec into OpenCV Mat?
- Android media codec: Mismatch between encoder and decoder buffer sizes
- How to check whether a decoder in Android support dolby vision video?
- android pause/resume video decoder implemented by MediaCodec
- Using MediaCodec to trim causes black frames when advancing encoder to reach newStartAt time
- MediaCodec Async mode with NDK not triggering callback functions
- Audio File Conversion by Encoding and Decoding using MediaCodec in Android
- Differences in Performance: MediaCodec in Kotlin vs NDK
- .NET MAUI Android how to transcode the video resolution to 720p to reduce the upload time to server
- Android: Get native HardwareBuffer Format (ImageFormat.PRIVATE)
Related Questions in AUDIOTRACK
- How can I write a short[] array to a .wav file in Java?
- TarsosDSP Skip Function
- Android. Using the AudioTrack.write method in coroutine context makes app crash
- Audio tracking with agora
- Android Java sound recorded with AudioRecord has noise when played
- Android AudioTrack with setLoopPoints cuts out early
- How to control the volume of audio track in mediastream object?
- Latency playing audio with AudioTrack from hash map after clicking button
- Android: Record and Playback audio from different devices
- Audio sample not playing as expected on android11
- Type of a video HTML element in Typescript
- Can't get AudioTrack to work properly on Android TV
- Flutter Audio Editing SDK
- AudioTrack: Use of stream types is deprecated
- How to add delay to a placback in Android
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
After much trouble, it turns out that the issue was with my use of
MediaFormat. On some devices, the MediaFormat returned byMediaCodecis not the same as the one returned byMediaExtractor. Frame rates, etc., may change. Instead of instantiatingAudioTrackwith the MediaFormat returned by MediaExtractor, it was necessary to wait until decoding began. At that point,MediaCodec.dequeueOutputBuffer()will returnMediaCodec.INFO_OUTPUT_FORMAT_CHANGED.MediaCodec.getOutputFormat()can then be used return the correct MediaFormat with which to initialize the AudioTrack. Hope this helps someone.