怎么在android虚拟机上播放视频文件

kamikameha 2011-06-22 04:29:23
我在eclipse上DDMS的File Explore对话框里把mj.mp4放到了/mnt/sdcard/目录下,JAVA代码如下:
就是个简单的播放媒体的Activity

public class MyActivity extends Activity
{
private VideoView mVideo;
private MediaController mMediaController;
private String this.mUri ;
private int mPositionWhenPaused = -1;

@Override
public void onCreate(Bundle savedInstanceState)
{
this.mUri = this.getExternalStoragePath() + "/mj.mp4";

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

this.mVideo = (VideoView)findViewById(R.id.videoView1);
this.mMediaController = new MediaController(this);
this.mVideo.setVideoURI(Uri.parse(this.mUri));
this.mVideo.setMediaController(mMediaController);

this.mMediaController.setAnchorView(this.mVideo);
this.mMediaController.requestFocus();

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Log.v("mplayer", ">>>create ok.");
}

@Override
public void onStart()
{
super.onStart();

this.mVideo.start();
}

public void onPause()
{
// Stop video when the activity is pause.
mPositionWhenPaused = this.mVideo.getCurrentPosition();
this.mVideo.stopPlayback();
super.onPause();
}

public void onResume()
{
// Resume video player
if(mPositionWhenPaused >= 0)
{
this.mVideo.seekTo(mPositionWhenPaused);
mPositionWhenPaused = -1;
}
super.onResume();
}
}

可运行起来后LogCat报错:
06-22 06:50:33.503: INFO/StagefrightPlayer(33): setDataSource('/mnt/sdcard/mj.mp4')
06-22 06:50:34.433: INFO/ActivityManager(79): Displayed hls.m3u/.HttpLiveStreaming: +7s83ms
06-22 06:50:34.774: INFO/ARMAssembler(79): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x477be520:0x477be6d8] in 1578134 ns
06-22 06:50:38.832: DEBUG/MediaPlayer(434): getMetadata
06-22 06:50:38.944: DEBUG/AudioSink(33): bufferCount (4) is too small and increased to 12
06-22 06:50:38.983: ERROR/MediaPlayer(434): error (1, -2147483648)
06-22 06:50:39.123: ERROR/MediaPlayer(434): Attempt to call getDuration without a valid mediaplayer
06-22 06:50:39.123: ERROR/MediaPlayer(434): error (-38, 0)
06-22 06:50:39.186: ERROR/MediaPlayer(434): Error (1,-2147483648)
06-22 06:50:39.186: DEBUG/VideoView(434): Error: 1,-2147483648

虚拟机上弹出窗口显示:
Cannot play video

请问我哪里写错了吗?还是哪里出问题了!谢谢!
...全文
1922 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen4hao 2013-06-06
  • 打赏
  • 举报
回复
模拟器上面 视频格式为3gp的可以直接播放 ,而格式为mp4,flv等都不可以,只有声音没有图像出来,这个问题我也很纠结,书上说是安卓2.2版本的一个bug 但是3gp格式在2.2上面可以播放,所以我感觉是视频大小的原因。。。求解释
kangnixi 2011-06-22
  • 打赏
  • 举报
回复
建议使用真机调试。

我之前也弄过视频的代码,如果代码没有问题,模拟器无法播放视频是因为模拟器没有视频的解码包。

===
个人博客:www.girlcoding.com
jeky_zhang2013 2011-06-22
  • 打赏
  • 举报
回复
根据报错是没有合法的播放器,你将this.mVideo.setVideoURI(Uri.parse(this.mUri));
改成this.mVideo.setVideoPath(Uri.parse(this.mUri));试一下
android_study2011 2011-06-22
  • 打赏
  • 举报
回复
用Android 3.0 SDK的模拟设备以上吧,2.2的不行。
祝你好运.
等散分。

来自android.growprogress.com
booooo­ 2011-06-22
  • 打赏
  • 举报
回复
哦, 不好意思,其实:

new AlertDialog.Builder(video)
.setTitle(R.string.playError)
.setMessage(R.string.sdisNullWarning)
.setIcon(R.drawable.error)
.setNegativeButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
System.exit(1);
}
}).show();

这段是可以不要的。

这些是我从我的项目中直接剪贴过来的,也没太注意;

其实你加上也无所谓。 只要你懂得怎么使用AlertDialog.Builder()的话,那你应该就会知道怎么回事
booooo­ 2011-06-22
  • 打赏
  • 举报
回复
/**
* 播放视频
*
* @param fileName
* 指定具体的视频文件名称(要求是.mp4 Or .3gp 文件)
*/
public void play(String fileName) {
StringBuffer path = new StringBuffer(this.getSDPath());
path.append("/");
path.append(fileName);
videoView.setVideoURI(Uri.parse(path.toString()));
videoView.requestFocus(); // 继承View类别,将重贴放在特定的视讯资源档案
videoView.start(); // 开始播放视频
}

/**
* 获取SD卡根路径
*
* @return 转换为一个字符串的形式返回
*/
public String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
} else {
new AlertDialog.Builder(video)
.setTitle(R.string.playError)
.setMessage(R.string.sdisNullWarning)
.setIcon(R.drawable.error)
.setNegativeButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
System.exit(1);
}
}).show();
}
return sdDir.toString();
}



最后,调用play();方法,里面传入mj.mp4即可播放;

你写的太多了
booooo­ 2011-06-22
  • 打赏
  • 举报
回复

public class

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧