2009-09-15 48 views
2

我使用下面的代码来显示在android模拟器中的视频文件,它工作正常时,视频文件存储在SDcard.But当我给任何网址的视频代码不工作。如何从远程URL显示Android模拟器中的视频?

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.SurfaceHolder; 
import android.view.View; 
import android.widget.*; 

public class playerActivity extends Activity 
{ 
Button b; 
VideoView preview; 
SurfaceHolder holder; 
MediaPlayer mp; 

private String path = "/data/data/payoda.android/funny.mp4"; 

//private String path = "http://www.daily3gp.com/vids/3.3gp"; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    preview=(VideoView)findViewById(R.id.surface); 
    holder=preview.getHolder(); 
    b=(Button)findViewById(R.id.cmd_play); 
    b.setOnClickListener(new View.OnClickListener() 
    { 
    public void onClick(View v) 
    { 
     try 
     { 
       mp=new MediaPlayer(); 
       mp.setDataSource(path); 
       mp.setScreenOnWhilePlaying(true); 
       mp.setDisplay(holder); 
       mp.prepare(); 
       mp.start(); 
     } 
     catch(Exception e) 
     { 

     } 
    } 
    }); 
} 
} 

异常thorwn是:

prepare failed: 
status=0xC8 

的logcat的细节为:

09-16 12:16:36.729: ERROR/PlayerDriver(542): Command PLAYER_INIT completed with an error or info PVMFErrContentInvalidForProgressivePlayback 
09-16 12:16:36.739: ERROR/MediaPlayer(2867): error (200, -27) 

在上面的代码,如果改变路径变量模拟器屏幕是黑的单button.May是我必须做更多的事情来显示从远程URL的视频,我不知道该怎么做。任何人有任何想法,请帮助我。

回答

4

首先,不要使用仿真器来测试视频播放。它处理视频播放的能力非常有限。使用实际的Android设备。

其次,在遇到多媒体问题时,请始终检查LogCat(adb logcat,DDMS或Eclipse中的DDMS透视图)以获取警告。 OpenCORE-- Android使用的多媒体引擎 - 倾向于将错误级别的条件记录为警告。

例如,您的视频文件可能没有设置为HTTP流传输所需的渐进式下载。在Linux上,您可以通过安装MP4Box并运行MP4Box -hint <file>来修补MP4视频以进行渐进式下载。

0

您还应该使用prepareAsync()方法而不是prepare()。使用prepare()是一个阻塞调用(UI被锁定),而prepareAsync不是阻塞调用。

+0

prepareAsync()也无法正常工作。其他选项 – Rajapandian

2

,你应该在你的模拟器 创建一个SD卡,然后你的路径更改您的Eclipse窗口查看到DDMS chaange到MNT/SD卡,并把你的文件到设备 动作BUTTOM是DDMS的右 - 上,它是一个电话图标

然后改变你的.java路径

private String path = "mnt/sdcard/funny.mp4"; 

你应该就可以正常工作。

相关问题