2017-09-12 2 views
0

hey les gars, je développe une station de télévision application android live streaming maintenant j'ai l'URL du moteur de streaming qui ont l'air http://197.243.19.131:1935/rtv/rtv/playlist.m3u8le chargement a échoué flux vidéo dans Android

quelqu'un peut me aider à trouver comment jouer vidéo de ce url dans Android s'il vous plaît aider j'ai essayé d'écrire des codes ici:

String stream_url="http://197.243.19.131:1935/rtv/rtv/playlist.m3u8"; 
View rootView = inflater.inflate(R.layout.fragment_two, container, false); 
videoView=(VideoView)rootView.findViewById(R.id.videoStream); 
Uri uri= Uri.parse(stream_url); 
videoView.setVideoURI(uri); 
videoView.start(); 
+1

Ce flux fonctionne-t-il pour vous sur une application externe? Navigateur ? VLC Player? De plus, sur quel appareil le testes-tu? HLS n'est pas entièrement pris en charge sur tous les systèmes d'exploitation et appareils Android. – Gil

+0

oui ce flux fonctionne sur le flux réseau vlc – realfair

Répondre

1

vous avez besoin de plonger un peu plus dans les médias et le streaming, bien que vous avez déclaré en vue de rendre la vidéo que vous ne l'avez pas traité Pourtant, les médias. Vous devez utiliser Media Player Api Fourni par Android pour diffuser ce m3u8.it est assez simple à lire le contenu en direct suivre ce code.

public class PlayerActivity extends AppCompatActivity implements 
     SurfaceHolder.Callback, MediaPlayer.OnPreparedListener { 


    private String Downloadurl; 
    private int playminute; 
    private SurfaceView mSurfaceView; 
    private MediaPlayer mMediaPlayer; 
    private SurfaceHolder mSurfaceHolder; 
    ProgressBar p_bar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.player); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    View decorView = getWindow().getDecorView(); 
    // Hide both the navigation bar and the status bar. 
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as 
    // a general rule, you should design your app to hide the status bar whenever you 
    // hide the navigation bar. 
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN; 
    decorView.setSystemUiVisibility(uiOptions); 

    //  thumburl = getIntent().getStringExtra("thumburl"); 
    //  p_bar=(ProgressBar)findViewById(R.id.p_bar); 
    // entryid = getIntent().getStringExtra("entryid"); 
    // playminute = getIntent().getIntExtra("playminute",0); 
    //fragmenttype = getIntent().getStringExtra("fragmenttype"); 
    // Downloadurl = getIntent().getStringExtra("Downloadurl"); 
    Downloadurl = "http://197.243.19.131:1935/rtv/rtv/playlist.m3u8"; 
    // Description = getIntent().getStringExtra("Description"); 
     Log.e("kanish","Download Url inside player:"+Downloadurl); 
    mSurfaceView = (SurfaceView) findViewById(R.id.surface_view); 
    mSurfaceHolder = mSurfaceView.getHolder(); 
    mSurfaceHolder.addCallback(PlayerActivity.this); 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
    p_bar.setVisibility(View.VISIBLE); 
    mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setDisplay(mSurfaceHolder); 
    try { 
     mMediaPlayer.setDataSource(Downloadurl); 
     mMediaPlayer.prepare(); 
     mMediaPlayer.setOnPreparedListener(PlayerActivity.this); 
     //mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
    } 

    @Override 
    public void onBackPressed() { 
    super.onBackPressed(); 

    } 

    @Override 
    public void onPrepared(MediaPlayer mp) { 
    p_bar.setVisibility(View.GONE); 
    mMediaPlayer.start(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     releaseMediaPlayer(); 
     } 

    @Override 
    protected void onDestroy() { 
    super.onDestroy(); 
    releaseMediaPlayer(); 
    } 

    private void releaseMediaPlayer() { 
     if (mMediaPlayer != null) { 
     mMediaPlayer.release(); 
     mMediaPlayer = null; 
    } 
    } 

} 

Laissez-moi savoir si ça aide.

Testé sur émulateur TV, bien des ruisseaux: Streaming on emulator

+0

Vous pouvez sélectionner la réponse correcte si cela vous a aidé. Il aidera d'autres personnes à l'atterrissage sur cette question pour trouver la solution de travail – DevKRos

+0

il a échoué à jouer dire dans le journal que ava.io.IOException: Préparer a échoué .: statut = 0x64 09-15 05: 03: 06.397 22633-22633/com .dukire.dukireapp W/System.err: at android.media.MediaPlayer._prepare (Méthode native) – realfair

0

Il vous manque OnPreparedListener.

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

Suivez ce tutorial.