7 Stimmen

Android Live-Streaming von TV vor Android 2.1

Ich entwickle eine App, in der ich Live-TV-Streaming implementieren muss. Meine Google-Suche hat mich zu der Annahme geführt, dass Live-Streaming nicht möglich ist, bis 2.1 Android.

Ist das richtig?

Ich erhalte den Code für das Streaming von Musik von mediaplayer und kann ihn durch die Einstellung der untenstehenden Methode verwenden:

mp.setAudioStreamType(2) ;

Aber ich möchte wissen, ist es ausreichend für Streaming nur Code wie das und speichern Datei wie unten Methode:

private void setDataSource(String path) throws IOException {
        if (!URLUtil.isNetworkUrl(path)) {
            mp.setDataSource(path);
        } else {
            Log.i("enter the setdata","enter the setdata");
            URL url = new URL(path);
            URLConnection cn = url.openConnection();
            cn.connect();
            InputStream stream = cn.getInputStream();
            if (stream == null)
                throw new RuntimeException("stream is null");
            File temp = File.createTempFile("mediaplayertmp", "dat");
            String tempPath = temp.getAbsolutePath();
            FileOutputStream out = new FileOutputStream(temp);
            byte buf[] = new byte[128];
            do {
                int numread = stream.read(buf);
                if (numread <= 0)
                    break;
                out.write(buf, 0, numread);
            } while (true);
            mp.setDataSource(tempPath);

            try {
                stream.close();
                Log.i("exit the setdata","exit the setdata");
            }
            catch (IOException ex) {
                Log.e(TAG, "error: " + ex.getMessage(), ex);
            }
        }
    }

Sind für das Live-TV-Streaming zusätzliche Funktionen erforderlich?

5voto

Phil Lello Punkte 7839

Zur Frage "Reicht das aus?": absolut nicht.

Sie speichern alle Daten von der URL auf dem Gerät und spielen sie dann wieder ab. Das funktioniert, wenn Sie garantieren können, dass es sich um einen kleinen Clip handelt, aber "Live-TV-Streaming" impliziert, dass es sich um einen Stream von unbekannter Länge handelt, der in Echtzeit gesendet wird.

Dies hat folgende Auswirkungen:

  1. Ein N-Minuten langes Programm benötigt N-Minuten, um an das Gerät übertragen zu werden, bevor die Wiedergabe beginnt.
  2. Eine lange Sendung kann den gesamten verfügbaren Speicherplatz ausfüllen.

En MediaPlayer.setDataSource(FileDescriptor fd) Methode sollte Daten aus jeder Quelle lesen, für die Sie einen FileDescriptor erhalten können, einschließlich Sockets.

Die genaue Vorgehensweise hängt vom verwendeten Protokoll ab, aber im Wesentlichen müssen Sie die Daten aus der Broadcast-Quelle lesen, in eine geeignete Form umwandeln und an die fd weiterleiten.

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