audio - Playing downloaded wav file from server on android -


prolouge

i have .wav file created using ibm bluemix watson text speech, , send on internet using servlet provided specific key file.
have media player create using

mediaplayer player = new mediaplayer(); 

the problem

i use in order play track download server.
@ first downloaded internal storage realized causing problem since player couldn't reach file due access limitations (the file wasn't readable media player since needs file world-readable).
regardless player didn't work no matter did, writing:

08-20 22:57:51.092 20507-20973/com.bikebeacon e/mediaplayer-jni: qcmediaplayer mediaplayer not present 08-20 22:57:51.321 20507-20523/com.bikebeacon e/mediaplayer: error (1, -2147483648) 

or

08-20 22:57:51.321 20507-20523/com.bikebeacon e/mediaplayer: error (38,0) 08-20 22:57:51.321 20507-20523/com.bikebeacon e/mediaplayer: error (-38,0) 

now application first checks if there external storage avaliable or not, if there saves file downloaded internet file in external storage (i checked, file exist, can't play in phone reason).
implemented this:

if (android.os.build.version.sdk_int >= android.os.build.version_codes.lollipop) {     audioattributes attr = new audioattributes.builder().setcontenttype(audioattributes.content_type_speech).build();     mediaplayer.setaudioattributes(attr); } else      mediaplayer.setaudiostreamtype(audiomanager.stream_music); mediaplayer.setdatasource(new fileinputstream(trackfile).getfd()); mediaplayer.prepare(); mediaplayer.start(); response.close(); 

note mediaplayer = new mediaplayer();

if there no external storage, app tries stream app server, implemented this:

 mediaplayer mediaplayer = new mediaplayer();                     if (android.os.build.version.sdk_int >= android.os.build.version_codes.lollipop) {                         audioattributes attr = new audioattributes.builder().setcontenttype(audioattributes.content_type_speech).build();                         mediaplayer.setaudioattributes(attr);                     } else                         mediaplayer.setaudiostreamtype(audiomanager.stream_music);                     mediaplayer.setdatasource(networkdispatcher.url_types.file.tostring());                     mediaplayer.prepare();                     mediaplayer.start(); 

after looking , digging through entire log saw lot of attempts of ffmpeg trying figure out **** file, , @ end spits out:

d/ffmpegextractor: ffmpeg detected media content 'audio/x-wav' confidence 0.08 ...... e/genericsource: failed init data source! 

i have no idea or how fix it, theiories happening range corrupt wav file, specific phone problem.

what know far:

  • the issue of "qcmediaplayer mediaplayer not present" issue occurs on either rooted devices, or on oneplus devices (leaning towards former).

  • the issue of "error(1, -2147483648)" given solution in thread (android mediaplayer throwing "prepare failed.: status=0x1" on 2.1, works on 2.2), however, answer gave either incorrect path (path correct, triple checked), missing permissions (requesting both in manifest , runtime internet , read\write external storage), or incompatible media type, might reason.


my actual theory: found post says format ibm provides (with synthize method text speech service) unplayable in android (as seen here: https://developer.ibm.com/answers/questions/180732/seems-watson-text-to-speech-service-returns-a-wav.html). have seen many posts not working people (the media player itself), , none of them (not even: why mediaplayer throws not present error when creating instance of it? has strangely vague answer) answered problem @ hand.

what can do? have absolutely no idea. idea have edit headers of wav file (or data of wav file) in order boost confidence of ffmpeg can play wav file.
on other hand might wrong, in case love if correct me actual issue.

try using library: https://github.com/brianwernick/exomedia library wraps exoplayer , easy use audio , video playback.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -