Android: cómo reproducir video mp4 desde la URL?

Estoy intentando jugar video pero no tener suerte así que estoy probando con algunos huesos desnudos código para ver cuál es el problema. Lo siguiente no funciona y no estoy muy seguro de por qué:

Manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.videotest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.videotest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

Actividad principal:

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VideoView vid = (VideoView) findViewById(R.id.videoView1); Uri vidUri = Uri.parse("http://somewebsite.com/somevideo.mp4"); vid.setVideoURI(vidUri); vid.setMediaController(new MediaController(this)); vid.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } } 

Activity_main:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <VideoView android:id="@+id/videoView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" /> </RelativeLayout> 

Este es el error que se me da al ejecutar el código:

 02-18 10:12:44.071: E/MediaPlayer(8357): java.io.FileNotFoundException: No content provider: http://somewebsite.com/somevideo.mp4 

Código de muestra:

 @Override protected void onCreate(Bundle savedInstanceState) // TODO Auto-generated method stub super.onCreate(savedInstanceState); try { setContentView(R.layout.videodisplay); String link="http://s1133.photobucket.com/albums/m590/Anniebabycupcakez/?action=view&amp; current=1376992942447_242.mp4"; VideoView videoView = (VideoView) findViewById(R.id.VideoView); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); Uri video = Uri.parse(link); videoView.setMediaController(mediaController); videoView.setVideoURI(video); videoView.start(); } catch (Exception e) { // TODO: handle exception Toast.makeText(this, "Error connecting", Toast.LENGTH_SHORT).show(); } } 

Tu Uri no es genuino. Prueba este Uri. Consulta este enlace http://androidcodeexamples.blogspot.in/2011/08/how-to-play-mp4-video-in-android-using.html

 Uri vidUri = Uri.parse("http://s1133.photobucket.com/user/Anniebabycupcakez/media/1489553974996_37622.mp4.html"); 

Creo que estás llamando a vid.start () antes de que el VideoView esté en el estado correcto, prueba esto:

 vid.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { vid.start(); } }); vid.setVideoURI(videoUri); 

También puede registrar un listener con setOnErrorListener () que podría darle más información sobre por qué está fallando.

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(""http://somewebsite.com/somevideo.mp4""); } 

O con VideoView no olvide requestfocus

 VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview); myVideoView.setVideoURI(Uri.parse("http://somewebsite.com/somevideo.mp4")); myVideoView.setMediaController(new MediaController(this)); myVideoView.requestFocus(); myVideoView.start(); 

@Override public void surfaceCreated (SurfaceHolder holder) {

  Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.abc); 

tratar {

  mp.setDataSource(this, video); mp.prepare(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } 

Mp.setDisplay (titular); Mp.start ();

O obtener vídeo de url sólo pasar su url en Uri.parse () método

  • Android: conflicto de ID cuando se crean 3 pestañas o más
  • ¿Por qué esta línea xmlns: android = "http://schemas.android.com/apk/res/android" debe ser la primera en el archivo xml de diseño?
  • Adición de una imagen como texto de fondo del texto
  • Cómo crear una tabla dinámica de datos en android?
  • Error: Android-XML: Colocar un <WebView> en un elemento padre que utiliza un tamaño wrap_content puede llevar a errores sutiles; Utilizar match_parent
  • Cómo crear una tabla en Android con varias columnas?
  • Org.eclipse.swt.SWTException: "Widget está eliminado" al intentar abrir AndroidManifest.xml
  • Elemento RelativeLayout debe declararse
  • WebView no funciona, el lanzamiento de la URL externa en el navegador. Visualización de la página web en la aplicación
  • Cambiar el color del texto de TimePicker
  • Generar un recurso de cadena que contiene% from build.gradle con resValue
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.