Live Streaming Thema

Dies könnte ein ganz interessantes Thema für Menschen sein, die in Ihrem Livestreaming von Ihrem Gerät zu einem Webserver intrested sind. (Primary Android / Java) habe ich endlich einen Weg gefunden, wie man von meinem Gerät die Kamera auf meinen Webserver (Website) livestream. Auf einem Wifi-Netzwerk dauert es ca. 1 Frame / Sekunde auf einem Wifi-Netzwerk zu zeigen, es funktioniert auch auf EDGE / 3G-Netzwerk. In diesem Thema / Frage möchte ich neue Techniken, Verbesserungen, Ideen über das Livestreaming besprechen, da ich meine mit dir teilen werde (Codes werden auch geschätzt).

Mein Code nimmt wiederholt einen Schnappschuss aus der Kamera-Vorschau mit setOneShotPreviewCallback () auf onPreviewFrame () aufrufen. Der Rahmen wird im YUV-Format ausgeliefert, so dass raw2jpg () es in 32-Bit-ARGB für den Jpeg-Encoder umwandelt. NV21 ist ein YUV-Planar-Format.

  • Wie identifizieren wir den Besitzer eines Fensters?
  • SimpleDateFormat Verhaltensänderung in Android Marshmallow
  • Wie benutzt man eine SyncAdapter-Klasse für mehrere Behörden?
  • ListFragment onItemClickListener funktioniert nicht
  • Fehler "EGL_BAD_MATCH" im Android Studio Emulator
  • Fragment Gemeinsame Elementübergänge funktionieren nicht mit ViewPager
  • GetPicture () wird von der Anwendung aufgerufen und erzeugt die jpeg-Daten für das Bild im privaten Byte-Array mCurrentFrame und gibt dieses Array zurück.

    Danach wird der byteArray mCurrentFrame Base64Encoded und sendet auf meinen Webserver in einer HTTP POST-Methode zusammen mit dem String-Wert von Base64 und einem eigenen ID-Code, so dass die Leute auch nicht in der Lage sein werden, auch ein anderes Bild zu senden. Auf dem Webserver wird es wieder decodiert und in die Datei test.jpg gelegt. PHP und Javascript läuft auf dem Webserver. PHP bekommt die POST-Methode und JavaScript lädt das Bild alle 750 Sekunden neu. Das ist im Grunde, wie es funktioniert

    Jetzt bin ich sehr intrested in Ihren Ideen, Verbesserungen und andere Sachen, die Sie hinzufügen möchten möchten. Hier sind einige meiner Fragen:

    1) Was wäre die beste Methode für Live-Streaming mit Audio? Videoaufzeichnung ODER meine Methode + Audioaufnahme?

    2) Wie würdest du das Videoaufzeichnungs-Streaming ansprechen?

    3) Wie würden Sie Stream Audio auf den Webserver? ( Hauptziel ) (mit Java, PHP und JavaScript)

    4) Ich habe auch vor, typische Live-Streaming-Feautures zu hinzufügen, zB wenn eine berühmte Person erscheint, könnte man die Fähigkeit haben, seinen Namen zu zeigen, während du live streaming bist, oder füge einfach ein Bild aus deinem sd-Verzeichnis zu deinem Livestream hinzu. Würden Sie es auch dekodieren und das Bild überlagern oder das Bild in irgendeiner Weise in Ihren Livestream stellen?

    Dieses Thema ist primär für Fragen, also bitte das könnte eine gute Hilfe für einige Leute hier sein. Darum habe ich eine Fülle von 50 (woot!) Rep.

    Mit freundlichen Grüßen XverhelstX

  • Playing Looping Audio mit AudioTrack
  • Android öffnen ContextMenu auf Short-Klick + Pass Element geklickt Details
  • Android-Thread-ID in LogCat anzeigen
  • Löschen Anwendungs-Cache beim Ausstieg in Android
  • Wie man Daten zwischen Fragmenten übergibt
  • OpenID für Android Apps, die SignIn benötigen
  • 4 Solutions collect form web for “Live Streaming Thema”

    Es schlägt mich, dass http-Posting ist wahrscheinlich nicht eine gute Möglichkeit, Live-Streaming von Video auf Ihren Server zu tun. Andere Leute haben mit Live-Streaming gespielt und sie haben einen Socket verwendet, um Live-Video-Streams und Audio-Streams auf ihre Server zu übertragen.

    Ich dachte, das war faszinierend – hier ist ein Link.

    http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system

    Aber der Typ hat auch eine Teilcode-Probe veröffentlicht –

    String hostname = "your.host.name"; int port = 1234; Socket socket = new Socket(InetAddress.getByName(hostname), port); ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); MediaRecorder recorder = new MediaRecorder(); // Additional MediaRecorder setup (output format ... etc.) omitted recorder.setOutputFile(pfd.getFileDescriptor()); recorder.prepare(); recorder.start(); 

    Der coole Teil, den ich nicht wusste, ist der ParcelFileDescriptor – der eine Datei auf dem Android-Dateisystem erstellt, die eigentlich eine Pipe zu einem Socket ist – also alles, was in die Datei geschrieben wird, wird über das Internet an einen entfernten Server übertragen. Sockets sind der richtige Weg, um diese Art von Ding zu tun, weil sie es Ihnen erlauben, Daten kontinuierlich zu senden, bis Ihre Aufnahme abgeschlossen ist, ohne dass Sie immer wieder Header senden müssen.

    Was ich denke, ist cool über diese Technik ist, dass er buchstäblich nimmt die Ausgabe von MediaRecorder (die wird ein codierter Video-Stream sein) und pumpt es über eine Steckdose an seinen Server. Dann kann er einfach die Daten herausholen, die über die Steckdose kommen. Kein Frame für Frame, keine Verarbeitung (Android SDK setzt die Encoder nicht im SDK sehr gut aus und sie sind ziemlich leistungsintensiv).

    Die Leute berichten, dass es funktioniert, aber ich habe nicht getestet. Jedenfalls hoffe das ist hilfreich.

    Du schickst jedes Mal einen ganzen Schnappschuss? Warum versuchst du nicht, einige Video-Komprimierungstechniken zu verwenden, wie anstatt ein Vollbild zu senden, jedes Mal wenn du eine komprimierte Version sendest (vielleicht ein Diff oder so was) und sie auf dem Server du das Bild basierend auf deinem letzten Bild erstellen kannst Und die soeben erhaltenen Daten. Ich denke, alle Video-Codecs tun dies, könnten Sie versuchen, einige der offenen Codecs Spezifikation, um einige Ideen zu bekommen.

    Über Audio. Ich würde den Audio-Stream getrennt und sie synchronisieren sie mit dem Video-Streaming basierend auf dem Video-Frame, den wir gerade zeigen.

    Grundsätzlich würde ich versuchen, meine Streaming so nah wie möglich zu bekommen, wie ein echtes Video-Streaming funktioniert. Vielleicht könntest du in ffmpeg schauen, ffmpeg hat einen rtsp server, wenn du das für android sie bauen könntest.

    Hinweis: Ich bin kein Android-Entwickler.

    Von dem, was Sie gesagt haben, scheint es, als ob Sie nur einen Schnappschuss statt eines echten Streams. Wenn deine Sorgen um Bandbreite dann eine niedrigere Auflösung verwenden. Genau wie dies in Android zu tun ist, bin ich mir nicht sicher

    Ich denke, dass, wenn es in Streaming-Klassen gebaut wird, dass Sie in der Lage, sowohl den Video-Stream und den Audio-Stream zu bekommen. Machen Sie keine lokale Transcoding (Ihr raw2jpg () zählt als Transcoding), da es zu viel Rechenleistung verwenden könnte. Nehmen Sie einfach den Stream, komprimieren Sie ihn und senden Sie ihn an Ihren Server.


    BEARBEITEN:

    Einige Links, um dich zu beginnen

    • Ein interessantes Projekt , das das Android-Handy zu einer IP-Kamera macht. Sie könnten um den Code graben, um herauszufinden, wie sie Ahold der Kamera Stream bekommen
    • Eine Frage zu diesem Thema

    1) Was wäre die beste Methode für Live-Streaming mit Audio? Videoaufzeichnung ODER meine Methode + Audioaufnahme?

    This really depends on your view of "best". If you are looking for resources and not the quality, then your way is really good. Otherwise, you should use a native streaming mechanism or maybe implement a video streaming technique to stream and encode video.

    3) Wie würden Sie Stream Audio auf den Webserver? (Hauptziel) (mit Java, PHP und JavaScript)

    I suggest that you stick to MediaRecorder because it really does what your doing in a good way. Still try to find a way to get the stream in order to send in your way as files are not the best choice although you could stick to files and send small files in a timely manner. In this way you could put a bigger portion of the load on the server rather than the client.

    4) Ich habe auch vor, typische Live-Streaming-Feautures zu hinzufügen, zB wenn eine berühmte Person erscheint, könnte man die Fähigkeit haben, seinen Namen zu zeigen, während du live streaming bist, oder füge einfach ein Bild aus deinem sd-Verzeichnis zu deinem Livestream hinzu. Würden Sie es auch dekodieren und das Bild überlagern oder das Bild in irgendeiner Weise in Ihren Livestream stellen?

    Do not even try to put it in your livestream. With your php server, you have more capabilities to send this info alone with certain tag and let the server do the processing or maybe integration of these with the video

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.