MediaPlayer setSurface de Android en estado de pausa

EDITAR:

Aparentemente, esto no tiene nada que ver con múltiples actividades, y esto tiene que ver con la codificación del archivo de video.

Intentaré simplificar la pregunta: tengo un objeto MediaPlayer en estado de pausa cuando llamomediaPlayer.getCurrentPosition() Obtengo un resultado que es preciso. Cuando llamomediaPlayer.setSurface() (usando una superficie diferente) seguido demediaPlayer.play() en este objeto, el video se reproduce en una posición diferente a la que devuelve getCurrentPosition (). Estoy probando en API> = ICE_CREAM_SANDWICH.

Probado tanto usando un recurso local en el proyecto como a través de flujo de red, resultado: no hay diferencia.

Enlace al archivo de video:http://wpc.4ba9.edgecastcdn.net/804BA9/testenvmedia/m_8705_LuS3w7ctSZjB.mov.bs.mp4

Tengo dos actividades, Actividad-A y Actividad-B.

Activity-A reproduce video desde un flujo remoto a unTextureView usando unMediaPlayer, también tiene un botón, cuyo propósito es:

Llame a mediaPlayer.pause ();

Abrir actividad-B.

La actividad B tiene también unaTextureView que se supone que debe reproducir el mismo video en su ubicación actual utilizando el mismoMediaPlayer objeto.

Actividad-Un método onCreate:

    textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {        
        @Override
        public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int w, int h) {
            try {
                final MediaPlayer mediaPlayer = MyApplication.getMediaPlayer();
                mediaPlayer.setDataSource(context, videoURI);
                mediaPlayer.setSurface(new Surface(surfaceTexture));
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mediaPlayer.setLooping(shouldLoop);
                mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mp) {
                        mp.start();
                    }
                });

                mediaPlayer.prepareAsync();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {}

        @Override
        public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { return false; }

        @Override
        public void onSurfaceTextureUpdated(SurfaceTexture surface) {}
    });

    btnFullScreen.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {     
        Log.e("WHATEVER", ">>> pause video at " + MyApplication.getMediaPlayer().getCurrentPosition());
        MyApplication.getMediaPlayer().pause();
        Intent intent = new Intent(getActivity(), ActivityB.class);
        startActivity(intent);
    }});

Actividad-B método onCreate:

        textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
        @Override
        public void onSurfaceTextureAvailable(SurfaceTexture surface, int w, int h) {
            MediaPlayer mediaPlayer = MyApplication.getMediaPlayer();
            mediaPlayer.setSurface(new Surface(surface));

            Log.e("WHATEVER", ">>> resume video at " + mediaPlayer.getCurrentPosition());
            mediaPlayer.start();
        }

        @Override
        public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
        }

        @Override
        public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
            return false;
        }

        @Override
        public void onSurfaceTextureUpdated(SurfaceTexture surface) {
        }
    });

Salida LogCat:

10-10 17:33:15.966  13886-13886/com.whatever.android.debug E/WHATEVER﹕ >>> pause video at 1958
10-10 17:33:16.817  13886-13886/com.whatever.android.debug E/WHATEVER﹕ >>> resume video at 1958

Entonces, aunque parece que MediaPlayer va a reanudarse desde esa posición exacta, tengo un comportamiento diferente para diferentes videos, la mayoría de ellos comienza en el mismo cuadro cada vez que intento reproducirlos en la Actividad-B, un video comienza en desde el principio, el otro comienza en algún otro punto cada vez.

De la documentación de Android deMediaPlayer.SetSurface() método:

This method can be called in any state and calling it does not change the object state.

Cualquier ayuda sería muy apreciada. ¡Gracias!