Android Media Stream Error? java.io.FileNotFoundException: Ningún proveedor de contenido: http: //

He seguido esto para reproducir Stream Radio en android

Aquí su funcionamiento fino pero el cargador que carga el pedacito despacio después de hacer clic en que necesito esperar 30+ segundos de tiempo

Pero estoy recibiendo este error en la consola

MediaPlayer: setDataSource IOException happend : java.io.FileNotFoundException: No content provider: http://www.example.com:8000/live.ogg at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1074) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:927) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:854) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1087) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1061) at org.oucho.radio.Player.playLaunch(Player.java:237) at org.oucho.radio.Playlist.onPostExecute(Playlist.java:98) at org.oucho.radio.Playlist.onPostExecute(Playlist.java:35) at android.os.AsyncTask.finish(AsyncTask.java:632) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5951) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 

En el enlace Puede ver todos los archivos como reproductor, etc

Debido a este error Mi flujo es lento. Por favor alguien me ayude en este tipo

Aquí este error no es con el archivo .ogg He intentado con .mp3 y Just /live

 http://www.example.com:8000/beet.ogg http://www.example.com:8000/mouthorgan.mp3 http://www.example.com:8000/live 

El audio está jugando, pero después de este error Está tomando unos 30 segundos de tiempo Algunas veces está tomando demasiado tiempo …. Cuando se reproduce Su mostrar este error y luego su conexión al servidor .. y jugando

por favor ayúdame a arreglar esto

java.io.FileNotFoundException: Ningún proveedor de contenido: http://www.example.com:8000/live.ogg

Debido a que su carga de intentar como un archivo de dispositivo contentprovider basado en el contexto y que está pasando como una URL.

Parece que el problema está en establecer el origen de datos en mediaplayer. Como usted está tratando de reproducir url o streaming que requiere el método setDataSource sin contexto.

Yo estaba enfrentando el mismo problema durante la reproducción de transmisión en vivo. y debajo del código resuelto mi problema.

PlayerScreen

  public class PlayerScreen extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player); startService(new Intent(this, MediaPlayerService.class)); findViewById(R.id.btnChangeTrack).setOnClickListener(clickListener); findViewById(R.id.btnStartMediaPlayer).setOnClickListener(clickListener); findViewById(R.id.btnStopMediaPlayer).setOnClickListener(clickListener); ToggleButton toggleButton = (ToggleButton) findViewById(R.id.togglePauseResume); toggleButton.setOnCheckedChangeListener(checkedChangeListener); /* * To get url which is passing from the previous activity listitem click. * If url which is pass from listitem click is not empty it will start player * */ String url = getIntent().getStringExtra("url"); if (!TextUtils.isEmpty(url)) startMediaPlayer(url); } private ToggleButton.OnCheckedChangeListener checkedChangeListener = new ToggleButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (!isChecked) { Intent intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PAUSE_MEDIA_PLAYER); sendBroadcast(intent); } else { Intent intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.RESUME_MEDIA_PLAYER); sendBroadcast(intent); } } }; private View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { Intent intent; switch (v.getId()) { case R.id.btnChangeTrack: intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.CHANGE_PLAYER_TRACK); intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, "http://www.example.com:8000/live"); sendBroadcast(intent); break; case R.id.btnStartMediaPlayer: startMediaPlayer("http://www.example.com:8000/beet.ogg"); //startMediaPlayer("http://108.163.197.114:8071/listen.pls"); break; case R.id.btnStopMediaPlayer: intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.STOP_MEDIA_PLAYER); sendBroadcast(intent); break; } } }; @Override protected void onResume() { super.onResume(); registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY)); } private String currentPlayerStatus = "N/A"; private BroadcastReceiver receiverFromservice = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action)) { /* * To get current status of player * */ currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY); Log.e("Player Mode", "" + currentPlayerStatus); } } }; @Override protected void onPause() { super.onPause(); unregisterReceiver(receiverFromservice); } /** * TO start media player.It will send broadcast to Service & from service player will start * * @param url */ public void startMediaPlayer(String url) { Intent intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER); intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url); sendBroadcast(intent); } } 

MediaPlayerService

 public class MediaPlayerService extends Service { public static final String BROADCAST_TO_SERVICE = "com.mediaplayer.playerfunction"; public static final String SERVICE_TO_ACTIVITY = "com.mediaplayer.currentPlayerStatus"; public static final String PLAYER_FUNCTION_TYPE = "playerfunction"; public static final String PLAYER_TRACK_URL = "trackURL"; public static final int PLAY_MEDIA_PLAYER = 1; public static final int PAUSE_MEDIA_PLAYER = 2; public static final int RESUME_MEDIA_PLAYER = 3; public static final int STOP_MEDIA_PLAYER = 4; public static final int CHANGE_PLAYER_TRACK = 5; public static final String PLAYER_STATUS_KEY = "PlayerCurrentStatus"; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { IntentFilter intentFilter = new IntentFilter(BROADCAST_TO_SERVICE); registerReceiver(playerReceiver, intentFilter); if (mPlayer != null && mPlayer.isPlaying()) { sendPlayerStatus("playing"); } return START_STICKY; } private BroadcastReceiver playerReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BROADCAST_TO_SERVICE.equalsIgnoreCase(action)) { String trackURL = intent.hasExtra(PLAYER_TRACK_URL) ? intent.getStringExtra(PLAYER_TRACK_URL) : ""; int function = intent.getIntExtra(PLAYER_FUNCTION_TYPE, 0); switch (function) { case CHANGE_PLAYER_TRACK: changeTrack(trackURL); break; case STOP_MEDIA_PLAYER: stopPlayer(); break; case PLAY_MEDIA_PLAYER: startMediaPlayer(trackURL); break; case PAUSE_MEDIA_PLAYER: pausePlayer(); break; case RESUME_MEDIA_PLAYER: resumePlayer(); break; } } } }; private MediaPlayer mPlayer; private void pausePlayer() { if (mPlayer != null && mPlayer.isPlaying()) { mPlayer.pause(); sendPlayerStatus("pause"); } } private void resumePlayer() { if (mPlayer != null && !mPlayer.isPlaying()) { mPlayer.start(); sendPlayerStatus("playing"); } } private void changeTrack(String url) { stopPlayer(); startMediaPlayer(url); } private void stopPlayer() { if (mPlayer != null) { mPlayer.stop(); mPlayer.release(); mPlayer = null; sendPlayerStatus("stopped"); } } public void startMediaPlayer(String url) { if (TextUtils.isEmpty(url)) return; if (mPlayer == null) mPlayer = new MediaPlayer(); try { mPlayer.setDataSource(url); mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { if (extra == MediaPlayer.MEDIA_ERROR_SERVER_DIED || extra == MediaPlayer.MEDIA_ERROR_MALFORMED) { sendPlayerStatus("erroronplaying"); } else if (extra == MediaPlayer.MEDIA_ERROR_IO) { sendPlayerStatus("erroronplaying"); return false; } return false; } }); mPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { Log.e("onBufferingUpdate", "" + percent); } }); mPlayer.prepareAsync(); mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { mPlayer.start(); sendPlayerStatus("playing"); } }); mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Log.e("onCompletion", "Yes"); sendPlayerStatus("completed"); } }); mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { return false; } }); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void sendPlayerStatus(String status) { Intent intent = new Intent(); intent.setAction(SERVICE_TO_ACTIVITY); intent.putExtra(PLAYER_STATUS_KEY, status); sendBroadcast(intent); } } 

player.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/section_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/ab_tool" android:text="Home" /> <Button android:id="@+id/btnStartMediaPlayer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/section_label" android:text="Start Player" /> <ToggleButton android:id="@+id/togglePauseResume" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btnStartMediaPlayer" android:checked="true" android:textOff="Resume" android:textOn="Pause" /> <Button android:id="@+id/btnChangeTrack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/togglePauseResume" android:text="Chanage Track" /> <Button android:id="@+id/btnStopMediaPlayer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btnChangeTrack" android:text="STOP" /> </RelativeLayout> 

Manifiesto

 <activity android:name=".PlayerScreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MediaPlayerService"></service> 

Para obtener datos de la transmisión de datos de encabezado url, puede [comprobar esta respuesta] [2]

Para el propósito de la prueba aquí he utilizado dos urls

ACTUALIZAR PlayerActivity

 public class PlayerScreen extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.player); startService(new Intent(this, MediaPlayerService.class)); /* * To get url which is passing from the previous activity listitem click. * If url which is pass from listitem click is not empty it will start player * */ String url = getIntent().getStringExtra("url"); if (!TextUtils.isEmpty(url)) startMediaPlayer(url); } @Override protected void onResume() { super.onResume(); registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY)); } private String currentPlayerStatus = "N/A"; private BroadcastReceiver receiverFromservice = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action)) { /* * To get current status of player * */ currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY); Log.e("Player Mode", "" + currentPlayerStatus); } } }; @Override protected void onPause() { super.onPause(); unregisterReceiver(receiverFromservice); } /** * TO start media player.It will send broadcast to Service & from service player will start * * @param url */ public void startMediaPlayer(String url) { Intent intent = new Intent(); intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER); intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url); sendBroadcast(intent); } } 

déjame saber si algo

Ir a este archivo https://github.com/Old-Geek/Radio/blob/master/app/src/main/java/org/oucho/radio/Player.java#L234 y cambiar

 player.setDataSource(context, Uri.parse(url)); 

a

 player.setDataSource(url) 

El problema es que void setDataSource (String path) Establece el origen de datos (file-path o http / rtsp URL) que se va a utilizar.

path String: la ruta del archivo o la URL http / rtsp de la secuencia que desea reproducir

el código github utiliza void setDataSource (Context context, Uri uri) que asume uri para ser de alguna forma de ContentProvider

contexto Contexto: el contexto a utilizar al resolver el Uri
uri Uri: el URI de contenido de los datos que desea reproducir

  • No se puede transmitir YouTube Url en VLC android
  • ¿Cómo hacer que AAC se busque en streaming HTTP usando MediaPlayer para Android?
  • Intent.ACTION_SEND WhatsApp
  • Transmitir vídeo desde iPhone o Android a RTMP
  • Mejor manera de mostrar datos de flujo en la vista de lista de Android
  • Buffer de flujo de audio
  • Biblioteca de streaming VLC Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.