2012-03-11 11 views
28

काम करता था इस कोड के लिए IOException कारण बनता है। फिर, शायद मैंने कुछ बदल दिया, कहीं (या अगर मुझे एंड्रॉइड सही पता है, तो एक अपडेट ने मीडिया प्लेयर में एक बग पेश किया)। यह पर कुछ डिवाइस पर काम करना बंद कर दिया! खासकर मेरे नेक्सस एस (2.3.6)।MediaPlayer.setDataSource मान्य फ़ाइल

फ़ाइल test.m4a (17 775 201 बाइट्स) एप्लिकेशन द्वारा डाउनलोड किया गया था। इसकी अखंडता को सत्यापित करने के लिए, मैंने इसे एसडी में कॉपी किया और इसे अपने पीसी पर खेला। कोई बात नहीं! इसके अलावा बाइनरी की तुलना मूल फ़ाइल के साथ की गई, और यह 100% से मेल खाती है।

try { 
    _mediaPlayer = new MediaPlayer(); 
    _mediaPlayer.setOnCompletionListener(this); 
    _mediaPlayer.setOnPreparedListener(this); 
    _mediaPlayer.setOnSeekCompleteListener(this); 
    _mediaPlayer.setOnBufferingUpdateListener(this); 
    _mediaPlayer.setOnInfoListener(this); 
    _mediaPlayer.setOnErrorListener(this); 

    // I even tried reading the file from SD card. Same error... 
    File file = new File("/data/data/com.mycompany.myapp/files/MediaCache/Test.m4a"); 
    // file.isFile() == true 
    // file.length() == expected value! 

    FileInputStream is = new FileInputStream(file); 
    _mediaPlayer.setDataSource(is.getFD()); // Throws! 
    // If I use the filename as parameter, it throws later when preparing the media player... 

    _mediaPlayer.prepareAsync(); 
} 
catch (Exception e) { 
    // java.io.IOException: setDataSourceFD failed.: status=0x80000000 
    e.printStackTrace(); 
} 

प्रश्न: क्या setDataSourceFD के लिए इस IOException कारण हो सकता है जब फ़ाइल वास्तव में मान्य है?

अद्यतन: यहाँ एक 98 kB ऑडियो फ़ाइल है कि मैं अपने नेक्सस एस पर नहीं खेल सकते (2.3.6) है: http://www.2shared.com/audio/wUKoRiQk/test.html

मेरा एक दोस्त कुछ जेडटीई डिवाइस (2.2) चलाता है और यह काम करने लगता है । मुझे यह नहीं मिला!

+0

यह छोटी फाइलों के लिए काम करता है (700 केबी अब तक परीक्षण किया गया है)। – l33t

+0

क्या आपने 'MediaPlayer.setDataSource (स्ट्रिंग पथ) 'का प्रयास किया था? – Malcolm

+0

क्या आप मीडिया प्लेयर से स्टैकट्रैक और त्रुटि लॉग पोस्ट कर सकते हैं? त्रुटि कोड की एक जोड़ी होनी चाहिए – njzk2

उत्तर

19

मैं आपको बताना चाहता हूं कि मीडियाप्लेयर चल रहा है और सही तरीके से काम कर रहा है। नीचे मेरी सभी परिकल्पना हैं। उन्हें बहुत गंभीरता से न लें।

यह आपकी test.m4a फ़ाइल है जो प्रारूप में एन्कोड किया गया है, जैसे मीडियाप्लेयर डीकोड नहीं कर सकता है, इसलिए एक त्रुटि फेंक रही है कि यह आपके लिए उपयोग करने के लिए मीडियाप्लेयर नहीं बना सकती है। ऐसा लगता है कि आपने इसे अपने कंप्यूटर पर कुछ एफएफएमपीईजी कोडेक्स में एन्कोड किया था। यह बेहतर होगा अगर आपने उन्नत कोडेक्स जैसे एफएफएमपीईजी का उपयोग किए बिना फ़ाइल बनाने का प्रयास किया, क्योंकि एंड्रॉइड फ्लाई पर उन्नत कोडेक्स को डीकोड नहीं कर सकता है।

हालांकि, मेरे पास जवाब नहीं है कि कुछ स्मार्टफ़ोन आपकी एम 4 ए फ़ाइल क्यों चला सकते हैं, जबकि अन्य नहीं कर सकते हैं। क्योंकि OGG कोडेक है क्या धृष्टता, काफी सरल एंड्रॉयड मक्खी पर डिकोड करने के लिए है आप के लिए मेरे सुझाव, एक सरल OGG प्रारूप कि धृष्टता पहले से ही अपने Android प्रोजेक्ट के लिए स्थापित किया गया है, उपयोग करने के लिए है। मैं दावा नहीं कर रहा हूं कि कई देव ज्यादातर ओजीजी का उपयोग कर रहे हैं, बस साधारण कोडेक्स का उपयोग करते समय ओजीजी को मीडियाप्लेयर और साउंडपूल के साथ बहुत सी समस्याएं नहीं लगती हैं। अधिक शोध की आवश्यकता है ...

यहां तक ​​कि मेरी किताब, शुरुआत एंड्रॉयड 4 खेल विकास, OGG फ़ाइलों पर निर्भर करता है।

यहाँ नीचे मेरी सबूत है। यह फ़ाइल "test.m4a" है जो मैं आपके लिंक से उपयोग कर रहा हूं। मैं इसे बनाया इतना है कि यह एक अंतहीन लूप में चलता है, यह सबूत के एक 100% सबूत बनाने:

package nttu.edu.test; 

import java.io.IOException; 

import android.app.Activity; 
import android.content.res.AssetFileDescriptor; 
import android.content.res.AssetManager; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.TextView; 

public class MediaPlayerTest extends Activity implements OnTouchListener { 
    MediaPlayer player = null; 
    TextView tv; 
    public final String fileName = "sounds/test.m4a"; 
    AssetManager asset; 
    AssetFileDescriptor afd; 

    public void onCreate(Bundle b) { 
     super.onCreate(b); 
     tv = new TextView(this); 
     tv.setOnTouchListener(this); 
     tv.setText("Touch to start playing the music."); 
     Log.d("MediaPlayer", "Creating MediaPlayer."); 
     player = new MediaPlayer(); 

     try { 
      asset = this.getAssets(); 
      afd = asset.openFd(fileName); 
     } 
     catch (Exception e) { 
     } 
     while (true) { 
      try { 
       Log.d("MediaPlayer", "Making sure it is in IDLE state..."); 
       player.reset(); 
       Log.d("MediaPlayer", "Setting Data Source..."); 
       player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
       Log.d("MediaPlayer", "Now initialized. Preparing it."); 
       player.prepare(); 
       break; 
      } 
      catch (IllegalArgumentException e) { 
       Log.i("MediaPlayer", "IllegalArgumentException..."); 
      } 
      catch (IllegalStateException e) { 
       Log.i("MediaPlayer", "IllegalStateException..."); 
      } 
      catch (IOException e) { 
       Log.i("MediaPlayer", "IOException..."); 
      } 
     } 
     try { 
      afd.close(); 
     } 
     catch (IOException e) { 
     } 
     setContentView(tv); 
     Log.d("MediaPlayer", "Everything is prepared and ready to play the music file."); 
    } 

    public boolean onTouch(View v, MotionEvent e) { 
     if (e.getAction() == MotionEvent.ACTION_UP) { 
      Log.d("MediaPlayer", "Playing the audio."); 
      if (player.getAudioSessionId() != 0) { 
       player.start(); 
       Log.d("MediaPlayer", "Success!"); 
      } 
     } 
     return true; 
    } 

    protected void onResume() { 
     super.onResume(); 

    } 

    protected void onPause() { 
     super.onPause(); 
     if (player.getAudioSessionId() != 0) { 
      player.pause(); 
      if (isFinishing()) { 
       player.stop(); 
       player.release(); 
      } 
     } 
    } 
} 

सूचना अंतिम स्ट्रिंग:

03-18 01:05:22.826: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:22.826: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:22.936: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:22.936: I/MediaPlayer(1289): IOException... 
03-18 01:05:22.936: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:22.936: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.037: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.046: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.046: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.046: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.146: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.146: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.146: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.156: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.256: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.256: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.256: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.256: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.366: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.366: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.366: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.366: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.476: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.476: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.476: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.476: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.586: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.586: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.586: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.586: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.696: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.696: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.696: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.696: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.806: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.806: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.806: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.806: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:23.917: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:23.917: I/MediaPlayer(1289): IOException... 
03-18 01:05:23.917: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:23.917: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.026: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.026: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.026: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.026: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.136: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.136: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.136: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.136: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.246: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.246: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.246: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.246: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.356: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.356: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.356: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.356: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.466: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.466: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.466: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.466: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:24.856: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:24.856: I/MediaPlayer(1289): IOException... 
03-18 01:05:24.856: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:24.856: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.017: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.017: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.017: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.017: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.146: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.157: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.157: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.157: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.266: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.266: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.266: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.266: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.376: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.376: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.376: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.376: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.486: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.486: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.486: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.486: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.586: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.586: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.586: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.586: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.696: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.696: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.696: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.696: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.806: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.806: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.806: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.806: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:25.916: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:25.916: I/MediaPlayer(1289): IOException... 
03-18 01:05:25.916: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:25.916: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.026: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.026: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.026: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.026: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.136: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.136: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.136: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.136: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.246: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.246: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.246: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.246: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.356: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.356: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.356: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.356: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.466: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.466: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.466: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.466: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.577: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.577: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.577: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.577: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.697: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.697: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.697: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.697: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.807: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.807: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.807: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.807: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:26.917: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:26.917: I/MediaPlayer(1289): IOException... 
03-18 01:05:26.917: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:26.917: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.027: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.027: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.027: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.027: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.137: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.137: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.137: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.137: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.236: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.236: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.236: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.236: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.347: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.347: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.347: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.347: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.457: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.457: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.457: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.457: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.567: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.567: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.567: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.567: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.677: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.677: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.677: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.677: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.787: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.787: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.787: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.787: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:27.907: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:27.907: I/MediaPlayer(1289): IOException... 
03-18 01:05:27.907: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:27.907: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.007: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.017: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.017: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.017: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.127: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.127: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.127: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.127: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.237: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.237: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.237: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.237: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.347: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.347: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.347: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.347: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.457: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.457: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.457: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.457: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.567: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.567: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.567: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.567: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.677: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.677: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.677: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.677: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.787: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.787: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.787: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.787: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:28.907: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:28.907: I/MediaPlayer(1289): IOException... 
03-18 01:05:28.907: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:28.907: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:29.017: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:29.017: I/MediaPlayer(1289): IOException... 
03-18 01:05:29.017: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:29.017: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:29.127: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:29.127: I/MediaPlayer(1289): IOException... 
03-18 01:05:29.127: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:29.127: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:29.237: E/MediaPlayer(1289): Unable to to create media player 
03-18 01:05:29.237: I/MediaPlayer(1289): IOException... 
03-18 01:05:29.237: D/MediaPlayer(1289): Making sure it is in IDLE state... 
03-18 01:05:29.237: D/MediaPlayer(1289): Setting Data Source... 
03-18 01:05:29.327: D/dalvikvm(1289): Calling exit(1) 

अब, यहाँ कोड मैं बनाया है, नीचे दिखाया गया है कोड स्निपेट के शीर्ष के पास चर।अगर मैं इस के साथ कि लाइन की जगह:

public final String fileName = "sounds/test.ogg"; 

और एक Ogg Vorbis फाइल करने के लिए अपने "test.m4a" फाइल फिर से सांकेतिक शब्दों में बदलना, और कोड में कोई अन्य बदलाव, मैं OGG फ़ाइल ठीक खेल सकते हैं। ओजीजी फ़ाइल के लिए परिवर्तन लॉग यहां दिए गए हैं:

03-18 01:14:21.547: D/gralloc_goldfish(1335): Emulator without GPU emulation detected. 
03-18 01:14:23.467: D/dalvikvm(1335): GC_CONCURRENT freed 50K, 4% free 5952K/6151K, paused 7ms+3ms 
03-18 01:14:24.647: D/MediaPlayer(1335): Creating MediaPlayer. 
03-18 01:14:24.657: D/MediaPlayer(1335): Making sure it is in IDLE state... 
03-18 01:14:24.657: D/MediaPlayer(1335): Setting Data Source... 
03-18 01:14:24.707: D/MediaPlayer(1335): Now initialized. Preparing it. 
03-18 01:14:24.927: D/MediaPlayer(1335): Everything is prepared and ready to play the music file. 
03-18 01:14:26.797: D/MediaPlayer(1335): Playing the audio. 
03-18 01:14:26.817: D/MediaPlayer(1335): Success! 

और फिर यह यहां रुक जाता है। चारों ओर घूमने वाला कोई लूप नहीं है।

और अधिक सबूत मेरा उत्तर समर्थन करने के लिए:

Link 1: Android SDK Reference (Do look at the State Diagram, very important!)

और एक तस्वीर (अपने "test.m4a" और अपनी फ़ाइल एक OGG फाइल में फिर से इनकोडिंग, रखा की छवि पक्ष द्वारा एक पक्ष):।

Image of your "test.m4a" and your file re-encoded into an OGG file, placed side-by-side.

+0

हालांकि आपका जवाब पूरी तरह से सही नहीं है, यह मुझे सही दिशा में बात की थी। मैं सिर्फ यह है कि यह सभी में कोई शीर्ष लेख था की खोज करने M4A हैडर का विश्लेषण किया! 'Test.m4a' वास्तव में एक कच्ची एएसी फ़ाइल है। इसलिए, समर्थित नहीं है। हालांकि यह एक रहस्य बना हुआ है, क्यों कुछ डिवाइस इस कच्चे ऑडियो को चलाने में सक्षम हैं। – l33t

+0

आह, मैं देख रहा हूँ। यह भी बताता है कि ऑडियो फ़ाइल फिर से एन्कोडिंग क्यों करती है। आपकी समस्या में आपकी मदद करने के लिए खुशी हुई। : डी –

+0

मैं इस प्रकार की त्रुटि मिले, जबकि सर्वर यूआरएल से वीडियो खेल रहा हूँ कृपया कृपया मेरी मदद :( –

14

आप setDataSource (FileDescriptor fd, लंबे समय से ऑफसेट, लंबे समय से लंबाई) उपयोग करने की कोशिश की है?

मैं कुछ googleing जो पता चलता है कि setDataSource (FileDescriptor) IOException के साथ समस्याओं का कारण बन सकता बाद this पाया। यह अजीब लगता है कि यह फ़ाइल की लंबाई को स्वयं ही नहीं समझ सका ...

+0

यह एक अच्छा संकेत था। अब मैं "जानता हूं" ऑडियो "दूषित" है (एंड्रॉइड मीडिया प्लेयर में काम नहीं करता है), भले ही यह अन्य उपकरणों (2.2 चल रहा है) पर काम करता है। यह कैसे संभव है कि यह अन्य उपकरणों पर काम करता है? – l33t

+0

मेरा एचटीसी डिजायर (2.2.2) फ़ाइल को भी नहीं चला सकता है। यह कहता है "इस प्रकार की ऑडियो फाइल चलाने में असमर्थ" तो यह एक संगतता मुद्दा हो सकता है। क्या आपने एक और फाइल टाइप के साथ कोशिश की है? एंड्रॉइड को एमपीईजी -4 का समर्थन करना है, लेकिन यह कम से कम प्रयास करने लायक है। – glindste

+0

धन्यवाद। मुझे इस जेडटीई उपयोगकर्ता के साथ दोबारा जांच करनी है। अब तक, ऐसा लगता है कि एवीएस ऑडियो कनवर्टर के साथ बनाई गई एएसी फाइलें काम नहीं करती हैं। ऑडैसिटी एन्कोडेड एएसी फाइलें काम करने लगती हैं (और लगभग 2,5 गुना बड़ा हो जाती हैं)। – l33t

4

test.m4a फ़ाइल का विश्लेषण बताता है कि फ़ाइल सभी में कोई M4A हैडर है। यह बिल्कुल एक रॉ एएसी फ़ाइल की तरह दिखता है, जो एंड्रॉइड द्वारा समर्थित नहीं है। जेडटीई ब्लेड फोन में कुछ अतिरिक्त गैर मानक एएसी सामान होना चाहिए।

मैं तर्क दूंगा कि इस प्रश्न का सही जवाब यहां कुछ उत्तरों की सहायता से है। मैं बक्षीस बिंदु कैसे विभाजित करूं?

+0

आप पूछने के लिए करने जा रहे हैं की जाँच [मेटा स्टैक ओवरफ़्लो] में इस (http://meta.stackoverflow.com/)। –

+0

कैसे आप m4a का विश्लेषण था कि यह कोई m4a हैडर है कि खोजने के लिए? – Aggressor

+0

बस नोटपैड में पहली बाइट की तुलना में। यही कारण है कि आप कहां मिल है फ़ाइल प्रारूप के लिए पहचानकर्ता (जैसे 'चारcc')। – l33t

0

इसका बहुत आसान समाधान। सबसे पहले सेट फ़ाइल इनपुट स्ट्रीम अपने पथ का उपयोग करके। इस सेट के बाद setDataSource में फ़ाइल डिस्क्रिप्टर। चलो

MediaPlayer mp = new MediaPlayer(); 
    String audioStoragePath =Environment.getExternalStorageDirectory() +"/Download/audio.mp3"; 

    //File sdIconStorageDir = new File(iconsStoragePath); 
    Log.d("AudioStartService"," path " + audioStoragePath); 
    try { 
     FileInputStream is = new FileInputStream(audioStoragePath); 
     mp.setDataSource(is.getFD()); 
     mp.prepare(); 
     mp.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

यह मेरे लिए काम है।

संबंधित मुद्दे