DeanHyde
DeanHyde

Reputation: 107

Why does my android app say "Cannot play video" after playback?

I have a simple application that starts with a splash screen activity that plays an mp4 video within a VideoView. When the video has completed, I'm trying to start a new activity via an OnCompletionListener.

When I start the application, the video works perfectly; playing both sound and audio as expected. Once the video has finished, the app displays a dialog with the title "Cannot play video" and continues normally once the "OK" button is pressed. The problem seems only to occur when I've added audio to the mp4 that I've created with Adobe After Effects. I've used the exact same video minus the audio track and it doesn't throw this error. I'm assuming the encoding of the file is fine as it plays fully before showing the dialog.

Here's my code:

public class Splash extends Activity {


 @Override  
 public void onCreate(Bundle savedInstanceState) {  

     super.onCreate(savedInstanceState);
     setContentView(R.layout.splash);

     Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.audio_intro); 

     VideoView videoview = (VideoView) findViewById(R.id.splash_view);
     videoview.setKeepScreenOn(true);  
     videoview.setVideoURI(video);

     videoview.setOnCompletionListener(new OnCompletionListener() {  
           public void onCompletion(MediaPlayer mp) {  
                 Intent intent = new Intent(Splash.this, Menu.class);
                 startActivity(intent);
                 finish();
           }
     });

     videoview.requestFocus();
     videoview.start();
 }

}

Here's what LogCat shows:

06-30 14:49:33.095: V/MediaPlayer-JNI(21544): native_setup
06-30 14:49:33.095: V/MediaPlayer(21544): constructor
06-30 14:49:33.095: V/MediaPlayer(21544): setListener
06-30 14:49:33.095: I/MediaPlayer(21544): path is null
06-30 14:49:33.095: V/MediaPlayer-JNI(21544): setDataSourceFD: fd 54
06-30 14:49:33.095: V/MediaPlayer(21544): setDataSource(54, 2521, 173889)
06-30 14:49:33.110: V/MediaPlayer(21544): setVideoSurfaceTexture
06-30 14:49:33.110: V/MediaPlayer-JNI(21544): setAudioStreamType: 3
06-30 14:49:33.110: V/MediaPlayer(21544): MediaPlayer::setAudioStreamType
06-30 14:49:33.110: V/MediaPlayer(21544): setVideoSurfaceTexture
06-30 14:49:33.110: V/MediaPlayer(21544): prepareAsync
06-30 14:49:33.140: V/MediaPlayer(21544): message received msg=5, ext1=480, ext2=270
06-30 14:49:33.140: V/MediaPlayer(21544): New video size 480 x 270
06-30 14:49:33.140: V/MediaPlayer(21544): callback application
06-30 14:49:33.140: V/MediaPlayer(21544): back from callback
06-30 14:49:33.140: V/MediaPlayer(21544): message received msg=1, ext1=0, ext2=0
06-30 14:49:33.140: V/MediaPlayer(21544): prepared
06-30 14:49:33.140: V/MediaPlayer(21544): callback application
06-30 14:49:33.140: V/MediaPlayer(21544): back from callback
06-30 14:49:33.145: I/MediaPlayer(21544): mOnVideoSizeChangedListener. Send MEDIA_SET_VIDEO_SIZE message.
06-30 14:49:33.145: V/MediaPlayer(21544): getVideoWidth
06-30 14:49:33.145: V/MediaPlayer-JNI(21544): getVideoWidth: 480
06-30 14:49:33.145: V/MediaPlayer(21544): getVideoHeight
06-30 14:49:33.145: V/MediaPlayer-JNI(21544): getVideoHeight: 270
06-30 14:49:33.145: I/MediaPlayer(21544): mOnPreparedListener. Send MEDIA_PREPARED message.
06-30 14:49:33.145: D/MediaPlayer(21544): getMetadata
06-30 14:49:33.145: V/MediaPlayer(21544): getVideoWidth
06-30 14:49:33.145: V/MediaPlayer-JNI(21544): getVideoWidth: 480
06-30 14:49:33.145: V/MediaPlayer(21544): getVideoHeight
06-30 14:49:33.145: V/MediaPlayer-JNI(21544): getVideoHeight: 270
06-30 14:49:33.170: I/MediaPlayer(21544): sendBroadcast android.media.IMediaPlayer.videoexist
06-30 14:49:33.170: V/MediaPlayer-JNI(21544): start
06-30 14:49:33.170: V/MediaPlayer(21544): start
06-30 14:49:37.915: V/MediaPlayer(21544): message received msg=100, ext1=1, ext2=-1007
06-30 14:49:37.915: E/MediaPlayer(21544): error (1, -1007)
06-30 14:49:37.915: V/MediaPlayer(21544): callback application
06-30 14:49:37.915: V/MediaPlayer(21544): back from callback
06-30 14:49:37.915: E/MediaPlayer(21544): Error (1,-1007)
06-30 14:49:37.915: D/VideoView(21544): Error: 1,-1007

I'm hoping someone can help me out as I've tried a number of things to resolve this and can't seem to find a similar issue being mentioned/solved anywhere. Thanks.

Upvotes: 5

Views: 4054

Answers (3)

electrobabe
electrobabe

Reputation: 1647

(1, -1007) error means: MEDIA_ERROR_UNKNOWN - "File or network related operation errors."

this may come from a corrupt file

see also javadoc of android.media.MediaPlayer.OnErrorListener#onError http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html#onError

@param what the type of error that has occurred:
MEDIA_ERROR_UNKNOWN
MEDIA_ERROR_SERVER_DIED

@param extra an extra code, specific to the error. Typically implementation dependent.
MEDIA_ERROR_IO
MEDIA_ERROR_MALFORMED
MEDIA_ERROR_UNSUPPORTED
MEDIA_ERROR_TIMED_OUT

Upvotes: 1

Diego Frehner
Diego Frehner

Reputation: 2560

Another random guess, call videoview.stopPlayback before finish your activity in the completion listener :)

Edit: is the dialog appearing before or after your completion listener?

Upvotes: 1

Mathias Conradt
Mathias Conradt

Reputation: 28665

Just an idea: I suggest to try to convert the video with a video converter, for example http://www.wondershare.com/pro/media-converter.html, (from mp4) to mp4 again, just to make sure you get audio (and video) to a standard that's supported by Android, as listed on http://developer.android.com/guide/appendix/media-formats.html#core.

Upvotes: 4

Related Questions