2016-03-24 31 views
7

我目前面臨一個問題,我可以解決自己。爲什麼我的視頻無法播放?

我的android應用程序(爲4.2和4.4構建)充當VideoPlayer。我已將一些視頻放入應用程序的文件目錄(沒有限制訪問權限)(MODE_WORLD_READABLE),播放器逐一讀取它們直到關閉設備或應用程序。

有時候,當我試圖使用VideoView 視頻不開始讀取本地視頻和日誌打印此警告:

03-24 12:10:50.493: W/MediaPlayer(12894): info/warning (701, 0) 

有時候,媒體播放器並沒有離開這個狀態直到我殺了我的應用程序(或重新啓動設備)。直到我殺了我的應用程序(或重新啓動設備)

03-24 14:07:07.775: E/FFMpegMediaPlayer(100): start in mCurrentState in 
03-24 14:07:07.775: I/FFMpegMediaPlayer(100): ****************************************** 
03-24 14:07:07.775: E/FFMpegMediaPlayer(100): start in mCurrentState = 8 
03-24 14:07:07.775: I/FFMpegMediaPlayer(100): starting main player thread:2013-11-20 
03-24 14:07:07.775: I/RkAudioPlayer(100): mAudioSink->open in mSampleRate = 48000 channels = 2 
03-24 14:07:07.775: I/FFMpegMediaPlayer(100): ****************************************** 
03-24 14:07:07.775: I/FFMpegMediaPlayer(100): mCurrentState = 8 
03-24 14:07:07.775: I/(100): starting thread 
03-24 14:07:07.775: D/AUDIO_DECOE(100): prepare() 
03-24 14:07:07.785: I/AudioHardwareALSA(100): Audio exiting sandby will open audio device 
03-24 14:07:07.895: E/ALSAModule(100): audio type flag: 0 

03-24 14:07:13.465: D/FFMpegMediaPlayer(100): url_feof=1,err=0 
03-24 14:07:13.465: I/FFMpegMediaPlayer(100): av_read_frame end of stream ret = -541478725 
03-24 14:07:13.465: W/MediaPlayer(9652): info/warning (950, 0) 
03-24 14:07:13.475: I/MediaPlayer(9652): Info (950,0) 
03-24 14:07:13.475: E/ERROR : INFO MEDIAPLAYER(9652): what:950, extra:0 
03-24 14:07:17.695: D/AudioHardwareALSA(100): AudioStreamOutALSA::standby()..... 

作爲第一個日誌,這一次後,沒有什麼appened:

有時,日誌之前的警告與後繼續。

此外,我已經把一些日誌記錄信息,以瞭解onPrepared回調是否被解僱,這是好的。

我發現再次播放視頻的唯一方法是在出現問題時重新啓動設備。

這是我的球員的一些代碼:

audioManager = (AudioManager) applicationContext.getSystemService(Context.AUDIO_SERVICE); //this is in the constructor of my singleton player 

    //all the following code are encapsulated in a method which is called every time a new video must be play. 
    setCompletionListener(); //in here I call videoview.stopPlayback(); and I recall this method to start another video 
    setErrorListener(); //here too I call videoview.stopPlayback(); 

    videoview.setVideoPath(applicationContext.getFilesDir() + "/" + myVideoFile.getFileName()); 

    videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(final MediaPlayer mediaPlayer) { 
      audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 90, 0); 
      mediaPlayer.setVolume(12.0f, 12.0f); 
      audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0)   
      mediaPlayer.start(); 
     } 
    }); 

我的問題是:爲什麼我的videoview無法正常播放所有的時間?問題有時在執行2或3小時後出現,或者有時在我的應用程序啓動時出現。

+0

這是happenieng在其他手機? –

+0

到目前爲止,我們只使用一種類型的設備,因爲它是專門用於解決方案的,但我們目前正在嘗試使用平板電腦。我會在幾個小時內給你反饋。感謝您的興趣。 – naike

+0

我猜VideoView實現本身可能存在問題http://www.piterwilson.com/blog/2014/03/11/android-mediaplayer-not-quite-there-yet/如果我是你,我會做一些更新的研究將sdk構建版本更新爲最新版本。也許谷歌已經修復了這個。 –

回答

1

代碼701裝置MediaPlayer正在緩衝更多的數據,並暫時暫停回放,這是正常的

公共靜態最終詮釋MEDIA_INFO_BUFFERING_START

MediaPlayer正在暫時爲了暫停回放內部到 緩衝更多數據。

Constant Value: 701 (0x000002bd)

主要問題是錯誤代碼如下描述950

info/warning (950, 0) 
I/MediaPlayer(9652): Info (950,0) 
E/ERROR : INFO MEDIAPLAYER(9652): what:950, extra:0 

錯誤代碼950的錯誤代碼9xx分支下的瀑布: What does MediaPlayer info/warning (973, 0) mean?

的錯誤可能是與你試圖播放的文件,而不是開發者冰或你的代碼。這個SO question有更多的信息。

也嘗試報告它作爲this one的錯誤,因爲似乎沒有適當的文檔和具體步驟來解決該錯誤。