안녕하세요~!
이클립스 갈릴레오
안드로이드 SDK 2.2

MediaPlayer를 개발하고 있습니다
메인(receiver)과 스레드(sender)가 로컬소켓으로 연결되어있습니다. 

메인에서 MediaPlayer를 생성하고 재생을 해줍니다. 
이때 스레드 하나가 도는데 이 스레드에서는
짧은 동영상 파일을 적당크기의 버퍼로 read 합니다. 
모두 read를 한 다음에 sender 로컬 소켓으로 write를 해줍니다
메인에서는 MediaPlayer 객체생성하고 receiver 소켓으로 얻은 파일디스크립터(fd) 를 
setDataSource(fd, offset, count)의 인자로 넣어줍니다.

그런데 계속해서 setDataSourceFd failed status = 0x80000000 exception이 납니다.
offset도 0으로 지정해줬는데 offset error 도 나고 unable to create media player 라고 ..ㅠ ㅠ.

이게 메인이구요

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main); 
mPreview = (SurfaceView) findViewById(R.id.SurfaceView01);
  holder = mPreview.getHolder();
  holder.addCallback(this);
  holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
try {
   InetAddress tmp = InetAddress.getLocalHost();
   Log.i("MyLog", "tmp : " + tmp);
  } catch (UnknownHostException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }  
try {     
v_Writer = new VideoWriter();
   LocalServerSocket server = new LocalServerSocket(S_ADDR);
   MediaWriter mMedia = v_Writer.new MediaWriter();
   new Thread(mMedia).start();
   Log.i("MyLog", "Media Thread Start"); 
while (receiver == null) {
    receiver = server.accept();
    Log.i("MyLog", "Server accept!");
   }  
 } catch (Exception e) {
   Log.e("exception", "Player exception: " + e);
  }
 }
private void playVideo() {
  doCleanUp();
  try { 
 mMediaPlayer = new MediaPlayer();
   Log.i("MyLog", "Create MediaPlayer");
   fd = receiver.getFileDescriptor();
   Log.i("MyLog", "playVideo fd: " + fd);
   mMediaPlayer.setDataSource(fd);
   mMediaPlayer.setDisplay(holder);
   mMediaPlayer.prepare();
   mMediaPlayer.setOnBufferingUpdateListener(this);
   mMediaPlayer.setOnCompletionListener(this);
   mMediaPlayer.setOnPreparedListener(this);
   mMediaPlayer.setOnVideoSizeChangedListener(this);
   mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
   Log.i("MyLog", "Start!");  
 } catch (Exception e) {
   Log.e(TAG, "error: " + e.getMessage(), e);
  }
 }




이게 스레드입니다
public class MediaWriter implements Runnable {
  public LocalSocket sender = null;
public void run() {
   try {
    Log.i("MyLog", "MediaWriter Runnable");
    sender = new LocalSocket();
    sender.connect(new LocalSocketAddress(S_ADDR));
    FileInputStream media = new FileInputStream(
      "/data/data/com.kpp/ski.3gp"); 
int readed;
       
    byte[] b = new byte[70000]; // 69986
    readed = media.read(b);
    Log.i("MyLog","readed: "+readed);
    if (readed > 0) {
     
     sender.getOutputStream().write(b, 0, readed);
     Log.i("MyLog2", "write~");
     
    }
   } catch (Exception e) {
    Log.e("myException", "MediaWriter exception", e);
   }
  }
 }     
이건 로그입니다