Playing media from internal storage directory I created

删除回忆录丶 提交于 2019-12-08 06:22:27

问题


So I created a directory on the internal storage like so:

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

Then I download files from a server and save them inside the directory like this:

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

Then files are saved successfully, then next I want to play them like this:

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

where path is :

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

The file does not want to play with this error:

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

And on the device a message pops up : Cannot play video, Sorry this video cannot be player.

Is this a issue with rights or what? If it is, I was thinking because I created them, I have the rights to them?


回答1:


CommonsWare has a good example on how to use the VideoView. Here is a link to someone who had a similar issue with video not wanting to play: Playing a video in VideoView in Android

Also here is a video class of his example that I found useful when learning how to incorporate the VideoView: https://github.com/commonsguy/cw-advandroid/blob/master/Media/Video/src/com/commonsware/android/video/VideoDemo.java hope this helps.

I would also make sure that you have the permission settings in your manifest set:

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



回答2:


The problem might be with the video encoding. Android FROYO and Gingerbread doesn't support H264 formats other than "Baseline" H264. So if your video is Mp4 & H264 encoded make sure its "AVC baseline" encoded. Use some tools like "Media info" in windows/Linux and check your video encoding. Convert the video to Baseline if possible.

An alternative workaround is to skip the Videoview and use a video play intent and redirect the playback to an app. User will be prompted to pick a player to handle the playback. Obviously if the video view cant play the file, the default player also wont be able to handle the file. you can choose some other installed player like Mx-Player which will stream the file perfectly.



来源:https://stackoverflow.com/questions/14981826/playing-media-from-internal-storage-directory-i-created

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!