J'ai trouvé quelques questions connexes mais je n'ai pas trouvé de réponse à mon problème spécifique.Android dit "Impossible de lire cette vidéo" lorsque vous essayez de lancer mp4 à partir du stockage local
J'essaie de lancer une activité vidéo qui lit une vidéo téléchargée sur la carte SD. Il génère une erreur indiquant "Impossible de lire cette vidéo". Lorsque je lance la vidéo sans l'application, elle joue très bien.
Ici, je crée l'activité:
VideoView mVideoView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.videoview);
Intent intent = getIntent();
String url = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
setJsonData(url);
Log.d("URL VID",url);
Uri uri = Uri.parse(url); //Declare your url here.
mVideoView = (VideoView) findViewById(R.id.videoview);
mVideoView.setVideoURI(uri);
MediaController vidControl = new MediaController(this);
vidControl.setAnchorView(mVideoView);
mVideoView.setMediaController(vidControl);
mVideoView.requestFocus();
mVideoView.start();
}
Quand je fais ce que je reçois cette erreur après avoir essayé de lancer la vidéo:
06-19 16:57:24.921 26033-26033/com.csform.android.uiapptemplate W/VideoView: Unable to open content: /storage/emulated/0/Nokia%20AirFrame.mp4
java.io.IOException: setDataSource failed.
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1120)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1066)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1003)
at android.widget.VideoView.openVideo(VideoView.java:437)
at android.widget.VideoView$7.surfaceCreated(VideoView.java:742)
at android.view.SurfaceView.updateWindow(SurfaceView.java:730)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:211)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2420)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1324)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6712)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:894)
at android.view.Choreographer.doCallbacks(Choreographer.java:696)
at android.view.Choreographer.doFrame(Choreographer.java:631)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:880)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
Mes autorisations sont définies comme suit:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Que * exactement * est la valeur de 'url'? – CommonsWare
L'URL est /storage/emulated/0/Nokia%20AirFrame.mp4 – tlambeir
'/ storage/emulated/0/Nokia% 20AirFrame.mp4' n'est pas un 'Uri' valide, et donc' Uri.parse() 'est probable pour vous donner des problèmes. Un 'Uri' a un schéma, tel que' file' ou 'content' ou' https'. – CommonsWare