4 Stimmen

Android Video Streaming von HttpResponse Objekt

Ich möchte Videoinhalte aus dem HttpResponse-Objekt wiedergeben. Der Inhalt wird von einem Streaming-Server heruntergeladen.

Meine Anforderung ist es, eine HTTP POST-Anfrage an den Server zu erstellen. Die Anfrage enthält die URL des Videos, den Benutzernamen und das Passwort des Benutzers zur Authentifizierung.

Ich möchte wissen, wie wir eine HTTP POST-Anfrage erstellen und das Video abspielen/herunterladen können.

Bitte geben Sie mir einige Hinweise, Schritte/Code, um fortzufahren.

Danke,

5voto

renam.antunes Punkte 761

Ich bin mir nicht 100%ig sicher, aber ich glaube, dass man die meisten Videos nicht streamen kann, weil das Format die Metadaten des Videos speichert. Deshalb muss You Tube Ihre Videodateien konvertieren, anstatt sie einfach in einem beliebigen Format zu zeigen. Es gibt Protokolle, die diese Metadaten kapseln und es ermöglichen, jedes beliebige Video zu streamen (das ist es, was youtube mobile tut). Sie sollten einen Blick auf RTSP werfen: http://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol

Wenn Sie einen rtsp-Link in einer videoView verwenden, sollte das Video einwandfrei gestreamt werden. Der Punkt ist, dass Ihr Problem mit dem Server und nicht mit dem Client zusammenhängt.

Zu Übungszwecken können Sie einen rtsp-Link von m.youtube.com abrufen und mit setVideoPath an eine videoView übergeben.

Wenn Sie die Server-Implementierung nicht ändern können, dann sind Ihre Lösungen wahrscheinlich die, die ich vermute:

1) Laden Sie das Video herunter und dekodieren Sie es selbst. Dabei müssten Sie alle Metadaten bearbeiten und sicherstellen, dass das Video funktioniert. Theoretisch könnten Sie ffmpeg für Android kompilieren, um Ihnen dabei zu helfen, aber ich konnte es nicht für Android kompilieren, wenn die Netzwerkoption aktiviert ist. Das ist eine Menge Arbeit.

2) Schreiben Sie Ihre eigene Implementierung von RTSP oder einem anderen Streaming-Protokoll. Laden Sie das Video in einem Thread herunter und erstellen Sie einen lokalen Server auf dem Gerät, um die Videodatei an eine videoView-Instanz zu streamen. Ich habe dies tatsächlich in einer App umgesetzt. Android unterstützt nicht das spezifische Protokoll, das die Server des Kunden verwenden, und ich musste es zum Laufen bringen. Dafür habe ich einen ganzen Monat gebraucht. Ich kann keinen Beispielcode posten, weil er dem Kunden gehört, aber ich kann Ihnen weitere Informationen dazu geben, wenn Sie daran interessiert sind.

Wie auch immer, wenn Sie den Server/das Format des Videos nicht ändern können, sollten Sie sich auf eine Menge Arbeit einstellen.

0 Stimmen

Danke, renam.antunes. Derzeit verwendet der Server Http-Streaming und die abgerufenen Videodateien sind im .mp4-Format. Die anderen streamingfähigen Links wie pocketjourney.com/downloads/pj/video/famous.3gp funktioniert in der Android-Client-Anwendung einwandfrei. Können Sie weitere Einzelheiten zur Serverkonfiguration für einen streamingfähigen Server angeben?

0 Stimmen

Hier: stackoverflow.com/questions/1613737/ . Android 3.0 soll mit HTTP Live Streaming funktionieren und ab 2.2 gibt es Flash 10.1, also kann man wohl eine Flash basierte App schreiben und RTMP/Flash HTTP Streaming nutzen. Ich weiß allerdings nicht genau wie.

4voto

success_anil Punkte 3624

Prüfen Sie den folgenden Code, um eine http- oder rtsp-Url in der Videoansicht anzuzeigen.

Bevor Sie nun Ihre Videobetrachtung aufrufen, holen Sie einfach

public class VideoViewDemo extends Activity {

    /**
     * TODO: Set the path variable to a streaming video URL or a local media
     * file path.
     */
    private String path = "";
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);

        if (path == "") {
            // Tell the user to provide a media file URL/path.
            Toast.makeText(
                    VideoViewDemo.this,
                    "Please edit VideoViewDemo Activity, and set path"
                            + " variable to your media file URL/path",
                    Toast.LENGTH_LONG).show();

        } else {

            /*
             * Alternatively,for streaming media you can use
             * mVideoView.setVideoURI(Uri.parse(URLstring));
             */
            mVideoView.setVideoPath(path);
            mVideoView.setMediaController(new MediaController(this));
            mVideoView.requestFocus();

        }
    }
}

Da Ihre Anforderungen unterschiedlich sind, stellen Sie zunächst eine http-Post-Anfrage an Ihren Server ... erhalten Sie den gewünschten Eingabestream ... schreiben Sie diesen Stream als mp4 in Ihr lokales Dateisystem. dann können Sie den folgenden Code zum Abspielen von Inhalten verwenden

// this can be path on file system
 String path="/adf.mp4"  ; 
    public void playVideo() { 

        MediaController mediaController = new MediaController(this);
        mediaController.setMediaPlayer(videoView);
        videoView.setVideoPath(path);   
        videoView.setMediaController(mediaController);
        videoView.requestFocus();
        videoView.start();
        mediaController.show();

0 Stimmen

Hallo Anil, obiger Code ist für das Herunterladen des Videos und das Speichern im Dateisystem und das Abspielen. Aber meine Anforderung ist es, es direkt vom Server (Video-Streaming) zu spielen.

0 Stimmen

Hallo Adarsh... Sie können ein RTSP-Video direkt mit der Methode setVideoPath der Videoansicht streamen. ... Dann in diesem Fall wird es get-Anfrage zu machen. aber so weit wie Ihre Frage betroffen ist, müssen Sie Benutzernamen und Passwort in Post-Anfrage gesendet .. so gibt es einen Workaround, wenn Sie nicht bereits versucht haben ... eine http-Post-Anfrage separat und erhalten die Authentifizierung Token. übergeben Sie diese Authentifizierung Token zusammen mit der URL zum Download von Video und streamen Sie es mit Video-Ansicht

2voto

Francisco Cruz Punkte 21

Ich habe das ausprobiert und es hat bei mir funktioniert :D kein rtsp kein nichts, nur eine url mit einem mp4 Video und es wurde abgespielt!

public class VideoActivity extends Activity {
    public static final String KEY = "video_id";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fotogaleria_video);
    Intent i = getIntent();
    if(i.hasExtra(KEY)){
        String url = "https://sites.google.com/site/tempmp4download/bnm.mp4";
        VideoView vv = (VideoView)findViewById(R.id.fotogaleria_video);
        // vv.setVideoPath(url);
        vv.setVideoURI(Uri.parse(url));
        vv.setMediaController(new MediaController(this));
        vv.requestFocus();
        vv.start();

        }

    }
}

1voto

Ashwani K Punkte 7652

0 Stimmen

Danke, Ashwani. Ich möchte die Schritte/Code wissen, um Live-Streaming-Inhalte aus der Antwort zu erhalten und spielen in der Mediaplayer oder VideoView :(

0 Stimmen

"Für das Streaming müssen Sie die vollständige Datei herunterladen und dann im Videoplayer anzeigen." Ich denke, dass Sie das Video nicht herunterladen müssen, um es zu streamen, wenn das so ist, wie funktioniert dann das Live-Streaming?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X