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
673 Views Asked by Tad At
1
There are 1 best solutions below
Related Questions in JAVA
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
- Redirect inside java interceptor
- Push toolbar content below statusbar
- Animation in Java on top of JPanel
- JPA - How to query with a LIKE operator in combination with an AttributeConverter
- Java Assign a Value to an array cell
Related Questions in ANDROID
- Delay in loading Html Page(WebView) from assets folder in real android device
- MPAndroidChart method setWordWrapEnabled() not found
- Designing a 'new post' android activity
- Android :EditText inside ListView always update first item in the listview
- Android: Transferring Data via ContentIntent
- Wrong xml being inflated android
- AsyncTask Class
- Unable to receive extras in Android Intent
- Website zoomed out on Android default browser
- Square FloatingActionButton with Android Design Library
- Google Maps API Re-size
- Push toolbar content below statusbar
- Android FragmentPagerAdapter Circular listview
- Layout not shifting up when keyboard is open
- auDIO_OUTPUT_FLAG_FAST denied by client can't connect to localhost
Related Questions in ANDROID-MEDIACODEC
- Android AudioTrack extremely slow on some devices
- Android audio too fast on some devices with MediaCodec and AudioTrack
- Converting ByteBuffer obtained from Mediacodec to a bitmap to store it in SD card
- How to compress mp4 video using MediaCodec Android?
- Will all phones support YUV 420 (Semi) Planar color format in h.264 encoder?
- How to drop frames while recording with MediaCodec and InputSurface?
- Extract a specific portion of video using MediaExtractor
- Android decoder dequeueOutputBuffer returns -1
- Unable to transcode audio via Android MediaCodec API
- Render Android MediaCodec output on two views for VR Headset compatibility
- Configure MediaCodec with the proper MediaFormat from a raw H.264 byte buffer
- Android Media Codec: How long does it take to decode and display one video frame
- Which AVC profile/level will be set in Android MediaCodec if we don't set this value manually?
- Android camera encoding through OpenGL
- Color Banding Playing Live Raw H.264 Stream In Android
Related Questions in AUDIOTRACK
- Android AudioTrack extremely slow on some devices
- How to play pre-recorded audio in reverse direction, using AudioTrak / AudioRekord IPA and Multithreading
- Android audio too fast on some devices with MediaCodec and AudioTrack
- Can't make Audiorecord and Audiotrack work togehter
- how to reverse AudioTrack play()
- Android pulse an icon when .wav volume changes
- Play sound in left or right speaker using android AudioTrack
- Audio Track keep playing sound after audio track released
- Using a buffer with Android AudioTrack
- Precisely Sync Looped Audio with Animation in Android
- Record multi audio tracks available in a stream with MediaRecorder
- AudioTrack buffer underrun when streaming from bluetooth socket
- Using AudioTrack in AudioTrack.MODE_STATIC?
- How to play left and right channel separately with AudioTrack?
- AudioTrack: start called from a thread
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)
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?
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.