I am using the Android SDK 1.6. On Nov 10, 6:18 pm, lei <[email protected]> wrote: > I wrote a media player for playing video, but it encounter an error of > PV SW DECODER IS USED FOR MPEG4 when I try to play back a 3gp format > video, anyone knows what is it? How to solve this problem? I paste my > code below: > > package com.test; > > import android.app.Activity; > import android.content.Intent; > import android.content.res.AssetFileDescriptor; > import android.media.AudioManager; > import android.media.MediaPlayer; > import android.os.Bundle; > import android.util.Log; > import android.view.SurfaceHolder; > import android.view.SurfaceView; > > public class MediaVideoTest extends Activity implements > MediaPlayer.OnPreparedListener,MediaPlayer.OnCompletionListener,SurfaceHold > er.Callback > { > > private static final String TAG = "MediaVideoTest"; > private MediaPlayer player; > private SurfaceHolder holder; > private SurfaceView surfaceView; > private int mWidth,mHeight; > > @Override > protected void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > setContentView(R.layout.video_view); > surfaceView = (SurfaceView) findViewById(R.id.surfaceView); > holder = surfaceView.getHolder(); > holder.addCallback(this); > holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); > > } > > private void playVideo() { > > try { > AssetFileDescriptor asd = > getResources().openRawResourceFd > (R.raw.chainsaw); > > //create media player > player = new MediaPlayer(); > > player.setDataSource(asd.getFileDescriptor(),asd.getStartOffset > (),asd.getLength()); > player.setDisplay(holder); > player.prepare(); > player.setOnPreparedListener(this); > player.setOnCompletionListener(this); > player.setAudioStreamType(AudioManager.STREAM_MUSIC); > > } catch (Exception e) { > Log.e(TAG, "error: " + e.getMessage(), e); > } > } > > @Override > public void onPrepared(MediaPlayer mp) { > Log.d(TAG, "onPrepared called"); > mWidth = player.getVideoWidth(); > mHeight = player.getVideoHeight(); > Log.d(TAG, "width : " + mWidth + " height : " + mHeight); > > if(mWidth != 0 && mHeight != 0){ > holder.setFixedSize(mWidth, mHeight); > player.start(); > } > } > > @Override > public void surfaceChanged(SurfaceHolder holder, int format, int > width,int height) { > Log.d(TAG, "surfaceChanged width : " + width + " height : " + > height); > } > > @Override > public void surfaceCreated(SurfaceHolder holder) { > Log.d(TAG, "surfaceCreated() is called"); > playVideo(); > } > > @Override > public void surfaceDestroyed(SurfaceHolder holder) { > Log.d(TAG, "surfaceDestroy() is called"); > } > > @Override > protected void onDestroy() { > super.onDestroy(); > if(player != null){ > player.release(); > player = null; > } > } > > @Override > public void onCompletion(MediaPlayer mp) { > > if(player != null){ > player.release(); > player = null; > } > > //close this activity; > finish(); > > //go back to the main menu > Intent intent = new Intent(this,MediaTest.class); > startActivity(intent); > > } > > > > }
-- You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en

