Почему мой видеозапись не играет?

У меня сейчас проблема, которую я могу решить самостоятельно.

Мое приложение для 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()..... 

В качестве первого журнала, после этого, ничего не было добавлено, пока я не убью свое приложение (или перезагрузите устройство).

Кроме того, я поместил некоторую информацию о регистрации, чтобы узнать, запущен ли onPrepared Callback, и это все в порядке.

Единственный способ, которым я снова нашел видео, – перезагрузить свое устройство, когда возникла проблема.

Вот какой код моего плеера:

  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(); } }); 

Мой вопрос: почему мой видеоролик не воспроизводится правильно все время? Проблема возникает иногда после 2 или 3 часов исполнения или иногда при загрузке моего приложения.

    Код 701 означает, что медиаплеер выполняет буферизацию большего количества данных и временно приостанавливает воспроизведение, это нормально

    Public static final int 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 как описано здесь: Что означает информация / предупреждение MediaPlayer (973, 0)?

    Ошибка может быть связана с файлом, который вы пытаетесь воспроизвести, а не с устройством или кодом. В этом вопросе SO есть еще одна информация .

    Также попробуйте сообщить об этом как об ошибке, так как, как представляется, нет надлежащей документации и конкретных шагов для устранения ошибки.