Spielen Sie m3u8 Video in Android
Ich will live-streaming-video und es ist im m3u8-format. Also habe ich versucht den code unten
public class StreamingPlayer extends Activity implements
OnBufferingUpdateListener, OnCompletionListener,
OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback{
private static final String TAG = StreamingPlayer.class.getSimpleName();
private int mVideoWidth;
private int mVideoHeight;
private MediaPlayer mMediaPlayer;
private SurfaceView mPreview;
private SurfaceHolder holder;
private String path;
private boolean mIsVideoSizeKnown = false;
private boolean mIsVideoReadyToBePlayed = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mediaplayer_2);
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
private void playVideo() {
doCleanUp();
try {
/*
* TODO: Set path variable to progressive streamable mp4 or
* 3gpp format URL. Http protocol should be used.
* Mediaplayer can only play "progressive streamable
* contents" which basically means: 1. the movie atom has to
* precede all the media data atoms. 2. The clip has to be
* reasonably interleaved.
*
*/
path = "httplive://xboodangx.api.channel.livestream.com/3.0/playlist.m3u8";
if (path == "") {
//Tell the user to provide a media file URL.
Toast
.makeText(
this,
"Please edit MediaPlayerDemo_Video Activity,"
+ " and set the path variable to your media file URL.",
Toast.LENGTH_LONG).show();
}
Log.e("PATH", "Path = " + path);
//Create a new media player and set the listeners
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.prepare();
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
}
public void onBufferingUpdate(MediaPlayer arg0, int percent) {
Log.d(TAG, "onBufferingUpdate percent:" + percent);
}
public void onCompletion(MediaPlayer arg0) {
Log.d(TAG, "onCompletion called");
}
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
Log.v(TAG, "onVideoSizeChanged called");
if (width == 0 || height == 0) {
Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")");
return;
}
mIsVideoSizeKnown = true;
mVideoWidth = width;
mVideoHeight = height;
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}
public void onPrepared(MediaPlayer mediaplayer) {
Log.d(TAG, "onPrepared called");
mIsVideoReadyToBePlayed = true;
if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) {
startVideoPlayback();
}
}
public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
Log.d(TAG, "surfaceChanged called");
}
public void surfaceDestroyed(SurfaceHolder surfaceholder) {
Log.d(TAG, "surfaceDestroyed called");
}
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "surfaceCreated called");
playVideo();
}
@Override
protected void onPause() {
super.onPause();
releaseMediaPlayer();
doCleanUp();
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
doCleanUp();
}
private void releaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
private void doCleanUp() {
mVideoWidth = 0;
mVideoHeight = 0;
mIsVideoReadyToBePlayed = false;
mIsVideoSizeKnown = false;
}
private void startVideoPlayback() {
Log.v(TAG, "startVideoPlayback");
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
}
In logcat zeigt es onBufferingUpdate percent:100
Aber ich kann nicht sehen das video.
Audio funktioniert, aber plötzlich war es aufgefallen.
Und ich habe versucht, diesen video-link http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 es funktioniert. Aber mein video-link nicht funktioniert und ich änderte httplive://... instead of http://
aber keine Verwendung.
Und ich sah diese Antwort auch Android-video-stream mms, m3u8.
Im obigen link zeigt es Das video nicht abgespielt werden kann Nachricht.
InformationsquelleAutor der Frage Ramakrishna | 2011-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das video wurde gab es in http://www.livestream.com. In diesem gibt es Mobile Api für live-streaming.
Die Api ist:
http://www.livestream.com/userguide/index.php?title=Mobile_API#How_to_get_mobile_compatible_clips_from_a_channel.27s_library
Im obigen link gibt es ausführliche Informationen für mobile kompatibel. Um den rtsp-link aus dem Kanal, um diesen link zu verwenden
http://xproshowcasex.channel-api.livestream-api.com/2.0/getstream
Ersetzen Sie Ihre Sender name statt
proshowcase
. Und dann bekommen alle mobile-kompatible url ' s wie IPhone, Android, Blackberry etc.,Mit dieser url können Sie stream-video in Android durch die Verwendung von video-view oder media player.
Für weitere Informationen Lesen Sie bitte die Mobil-Api-link.
Wenn alle eines bekommen, das gleiche problem, ich hoffe, diese Antwort hilft Ihnen.
Viel Glück.
InformationsquelleAutor der Antwort Ramakrishna
Ich habe kein problem zu spielen stream:
Über die Nachricht:
Vielleicht brauchen Sie Berechtigungen hinzufügen, um Ihre Manifest-Datei:
InformationsquelleAutor der Antwort Sergey
Ich denke, Sie sollten das:
Werden, bevor der Aufruf
prepare()
InformationsquelleAutor der Antwort MByD
Haben Sie versuchen zu spielen, Ihre Verbindung mit native player direkt über web-browser?
Wenn Sie nicht spielen können Sie mit einheimischen Spieler, es bedeutet, dass Ihre Datei wird nicht unterstützt die aktuelle Android-version.
HTTP-Live-Streaming-format haben einige Besonderheiten, die nicht unterstützt von Android, in der Erwägung, dass es spielen kann, auf IOS.
InformationsquelleAutor der Antwort nonococo
Versuchte ich m3u8 video-format für mehr als 6 Monate und es ist nicht gelungen. Es spielt in meiner iPhone-app und native Anwendungen. Mein streaming-server Red5, und es hat keine RTSP-plugin. Es gibt RTMP-streaming und könnte es nicht sein, strömten in Android. Ich wartete ein Jahr, um ein OS mit Unterstützung für RTSP-streaming, aber google noch nicht. Dennoch bin ich über eine web-Ansicht mit einem flash-player zum streamen von live-video(Es hat nicht viel Klarheit). Ich fühle mich beschämt dies zu sagen, zu meinen Kunden und die kontinuierliche Suche zum spielen der live-stream im Android-Standard-player.
Ich denke, deine video-url kann nicht RTSP.
InformationsquelleAutor der Antwort arshad
Wie zu spielen .M3U8 Streaming in Android
activity_main.xml
Main.java
Ich habe gesehen, eine Menge Leute haben Probleme mit der Wiedergabe .M3U8, es kommt auf die verwendeten codecs für das streaming und Kompatibilität mit dem Gerät, zum Beispiel mit einigen der meine .m3u8-Dateien werden nur unterstützt Geräte mit Bildschirmen von 1200 x800 und höher.
InformationsquelleAutor der Antwort Jorgesys