从我创建的内部存储目录播放媒体

时间:2013-02-20 14:07:14

标签: android android-file

所以我在内部存储上创建了一个目录,如下所示:

File mediadir = getDir("tvr", Context.MODE_PRIVATE);

然后我从服务器下载文件并将它们保存在目录中:

URL url = new URL(urlString);
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
InputStream is = url.openStream();
Log.d("DOWNLOAD NAME",name);
FileOutputStream fos = new FileOutputStream(mediadir+name);
etc

然后文件成功保存,接下来我想像这样播放它们:

String path = filelist[playListIndex].getAbsolutePath();
videoView = (VideoView) findViewById(R.id.videoView);
videoView.setVisibility(View.VISIBLE);
videoView.setOnCompletionListener(this);
videoView.setVideoPath(path);
videoView.start();

路径是:

/data/data/com.mypackage/tvr/video.mp4

该文件不想播放此错误:

02-20 15:57:21.447: E/MediaPlayer(24143): error (1, -2147483648)

在设备上弹出一条消息:无法播放视频,抱歉此视频无法播放。

这是权利问题还是什么问题?如果是的话,我在想,因为我创造了它们,我对它们有权利吗?

2 个答案:

答案 0 :(得分:0)

CommonsWare有一个很好的例子来说明如何使用VideoView。以下链接指向不想播放视频的类似问题的人: Playing a video in VideoView in Android

这里有一个他的例子的视频课,我发现在学习如何合并VideoView时很有用: https://github.com/commonsguy/cw-advandroid/blob/master/Media/Video/src/com/commonsware/android/video/VideoDemo.java希望这会有所帮助。

我还要确保您在清单集中拥有权限设置:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

答案 1 :(得分:0)

问题可能出在视频编码上。除了“Baseline”H264之外,Android FROYO和Gingerbread不支持H264格式。因此,如果您的视频是Mp4&amp; H264编码确保其“AVC基线”编码。在Windows / Linux中使用“媒体信息”等工具,检查视频编码。如果可能,请将视频转换为基线。

另一种解决方法是跳过Videoview并使用视频播放意图并将播放重​​定向到应用。系统将提示用户选择播放器来处理播放。显然,如果视频视图无法播放文件,则默认播放器也无法处理该文件。您可以选择其他一些已安装的播放器,如Mx-Player,它将完美地传输文件。