Streaming App über einfache P2P-Verbindung vom PC programmieren

  • Antworten:14
Markus Joos
  • Forum-Beiträge: 7

23.02.2017, 14:27:33 via Website

Hallo Community,

ich muss für mein Studium (Semesterarbeit) eine Streaming App programmieren und wollte hier im Rat/ Hilfe fragen, da ich wenig bzw gar keine Kenntnisse in der Android Programmierung habe und es leider nicht in meinem Studium vorgesehen ist. Ich wollte es mir selber erlernen bzw die Grundlagen verstehen.

Kommen wir nun zum eigentlichen Projekt bzw Aufgabe der App:
Die eigentliche Aufgabe der App soll sein, dass sich das Android-Gerät mit einem meine Laptop verbindet ( geplant war die Verbindung über Wlan zu machen (P2P)) und wenn diese Verbindung steht, muss sich die Videokamera des Android-Geräts aktivieren, um die Live-Übertragung an den Laptop zu senden. An sich hört sich das Projekt ja recht simpel, aber leider ist das nicht so, da ich wenig Erfahrung habe, wie ich vorgehen muss und leider ich da keinen wirklichen Ansprechspartner habe, der mir weiterhelfen kann.

Aus diesem Grund frage ich euch:

  1. Wie kann ich eine einfach P2P-Verbindung mit meinem Laptop programmieren? Ich habe über die Seite (Android-Developer) versucht, den Quelltext zu benutzen, aber da ich leider immer wieder auf Probleme stieß, die ich nicht beheben konnte, habe ich es aufgegeben.

  2. Nachdem die Verbindung steht, sollte die Kamera über einen Button aktiviert werden können.

3.Nachdem die Kamera aktiviert werden soll, sollte die Übertragung direkt beginnen (Überlegung ob da ebenfalls einen Button implementiert werden soll)

  1. Wie kann man die Live-Übertragung an den PC sichbar machen? (Ideen?)

Ich wäre für jeden Tipp oder Hilfe dankbar, da ich langsam am Verzweifeln bin, denn da ich schon recht lange an dieser Semesterarbeit arbeite und ich einfach nicht mehr weiter weiß.

Ich hoffe ich konnte mein Problem euch schildern.

Mit freundlichen Grüßen
Markus

— geändert am 23.02.2017, 14:48:48 durch Moderator

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.172

23.02.2017, 14:48:47 via App

Hallo Markus Joos!

Herzlich Willkommen hier bei uns im Forum. :)

Ich habe mir mal erlaubt, deinen Threadtitel etwas zu bearbeiten. Bitte sei doch so gut und achte das nächste Mal auf einen aussagekräftigeren Threadtitel.

Danke :)

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Markus Joos

Antworten
swa00
  • Forum-Beiträge: 3.704

23.02.2017, 18:31:34 via Website

Hallo Markus,

ich erlaube mir, Dir die kurze Variante zu beschreiben

Du wirst nicht um fundierte Kenntnisse in der Android Programmierung drumrum kommen.

Du benötigst auf der Smartphoneseite einen Streamingsserver und einen VideoGrabber.
Beides Teile, bei denen man schon richtig fit sein muss und einige Erfahrung mitbringen sollte.

Auf PC Seite kannst du eigentlich mit VLC arbeiten, wenn du eines der bekannten Streamingprotokolle verwendest.

Hier mal ein Code Beispiel des Servers zu Einsicht - (ein wenig veraltet)
https://github.com/ppamorim/ipcamera-for-android/tree/master/droidipcam

Hier das Protokoll
https://github.com/begeekmyfriend/yasea

Hier der Videograbber
http://stackoverflow.com/a/8655244

— geändert am 23.02.2017, 18:32:00

Liebe Grüße - Stefan
[ App - Entwicklung ]

Markus Joos

Antworten
Markus Joos
  • Forum-Beiträge: 7

15.03.2017, 11:37:45 via Website

sorry, dass ich jetzt darauf antworte, aber ich war leider im Prüfungsstress und beschäftige mich erst seit dieser Woche mit dem Thema. Habe mir die Links bzw den Quellcode angeschaut und es sind wieder weitere Fragen aufgetaucht.

  1. Wie sollte ich am besten vorgehen, um mein Problem zu lösen, da ich wenig bzw keine Ahnung von der Android Programmierung habe?

  2. Was ist ein VideoGrabber? Habe danach gesucht und da kam heraus dass es ein Gerät ist, welches ein Video-Signal auf den PC holt und dort digitalisiert, also eine Videodatei auf dem PC erzeugt. Aus welchem Grund hast du mir dann einen Source Code geschickt ?

  3. Den Streaming-Server kann ich vermutlich nicht so übernehmen vom Source Code oder?

Ich hoffe du kannst mir da ebenfalls weiterhelfen.

Grüße Markus

Antworten
swa00
  • Forum-Beiträge: 3.704

15.03.2017, 13:33:14 via Website

Hallo Markus,

Wie sollte ich am besten vorgehen, um mein Problem zu lösen, da ich wenig bzw keine Ahnung von der Android Programmierung habe?

Dies wird deine erste Hürde sein , da sich die Links auf einen Quellcode beziehen. Ohne fundierte Kenntnisse
in der Programmierung unter Java / Android wirst du diese auch nicht verstehen können.

Was ist ein VideoGrabber? Habe danach gesucht und da kam heraus dass es ein Gerät ist, welches ein Video-Signal auf den PC holt und dort digitalisiert, also eine Videodatei auf dem PC erzeugt. Aus welchem Grund hast du mir dann einen Source Code geschickt ?

Ein Videograbber hat nichts mit einem PC zu tun , sondern wie der Name schon sagt : Von z.b. einer Cam/Bildschirm ein Video "abzugreiffen" (grabbing) um dann die einzelnen Frames weiter verarbeiten zu können .
Und da du hier im Bereich Entwicklung für Android angefragt hast , ist dieser Sourcecode auch dafür gedacht und auch
deshalb habe ich dir diesen für Dich herausgesucht.

Neben der Umsetzung unter Java müsstest Du im Vorfeld noch Kenntnisse über das eigentliche Verfahren besitzen
(Frames, Auflösung, Komressions/Übertragunsverfahren (z.b. H264), Fehlerausgleich, Socket-Verbindungen, Threads,
Asynchrone Verarbeitung etc etc)

Den Streaming-Server kann ich vermutlich nicht so übernehmen vom Source Code oder?

1:1 sowieso nicht . Es obliegt dem Entwickler aus dieser Vorgabe seinen Quellcode so umzugestalten , wie er für sein Projekt passend ist.

Fazit : Wenn du gar keine Ahnung vom Entwickeln unter Android hast , und Dir im Prinzip die obigen Links
schon "Bahnhof" darstellen, ist dieser Forumsbereich eher als falsch zu bezeichnen

Anmerkung : Auch für einen "Profi" mit langjähriger Erfahrung ist dein Vorhaben eher als "sportlich" zu bezeichnen.
Da wird auch Dieser sich so manche Zähne ausbeissen und länger dran sitzen

— geändert am 15.03.2017, 14:01:35

Liebe Grüße - Stefan
[ App - Entwicklung ]

Markus Joos

Antworten
Markus Joos
  • Forum-Beiträge: 7

15.03.2017, 14:12:43 via Website

Hallo swa00,

ich danke dir für die ausführliche und ehrliche Antwort. Ich habe mir dies schon gedacht, dass diese Aufgabe vermutlich eine größere Herausforderung ist, als eigentlich gedacht ist.

Vermutlich ist diese Frage hier auch fehl am Platz, aber ich frag dich wie sollte ich am besten/schnellst JAVA/Android programmieren lernen? Du hast sehr viel Erfahrung und könntest mir den einen oder anderen Hinweis geben.

Ich habe schon Grundkenntnisse in der Programmierung (habe schon C++ programmiert). Also würde mir vermutlich die Grundlagen der Android/Java Programmierung einfacher fallen, da ich weiß wie in etwa sowas aufgebaut sein wird, aber trotzdem werde ich das nicht unterschätzen.

Ich habe mich auch Videos/Tutorials und kleine Anwendungen programmiert, aber die Frage wie schaffe ich mein Ziel schnell und effektiv, denn Source-Code einfach durch Copy und Paste hinzuzufügen ist nicht mein Ziel, sondern das ich auch verstehe, was ich da programmieren kann.

Gruß Markus

Antworten
swa00
  • Forum-Beiträge: 3.704

15.03.2017, 14:22:18 via Website

Hallo Markus,

rein aus Interesse : Welches Studium ist das denn , bei dem der Proff einem so etwas als Neuling im Semester aufdrückt ? :-)

Ich wollte Dir schon an dieser Stelle die Links mit den Grundlagen posten, sehe aber eben , dass du bereits
deine erste App auf die Beine gestellt bekommen hast .

Ich habe mich auch Videos/Tutorials und kleine Anwendungen programmiert, aber die Frage wie schaffe ich mein Ziel schnell und effektiv, denn Source-Code einfach durch Copy und Paste hinzuzufügen ist nicht mein Ziel, sondern das ich auch verstehe, was ich da programmieren kann.

Copy & Paste wird auch nicht zum Ziel führen - verstehen ist das A & O.

Dir bleibt definitiv nur das übrig , was wir alle hier tun :

Lesen, recherchieren, lernen und Stück für Stück umsetzen.

— geändert am 15.03.2017, 15:04:46

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Markus Joos
  • Forum-Beiträge: 7

15.03.2017, 15:37:20 via Website

Hallo,

du hast es glaub falsch verstanden, ich studiere Robotik und Automation und bin aktuell im 10. Semester also fast am Ende.
Wie der Studiengang schon sagt, hat das leider nicht mit meinem eigentlichen Fächern zu tuen sondern ein komplett neues Thema ist, womit ich mich dann beschäftigen will.

Ich wollte Dir schon an dieser Stelle die Links mit den Grundlagen posten, sehe aber eben , dass du bereits
deine erste App auf die Beine gestellt bekommen hast .

Ich wäre dir trotzdem dankbar wenn du mir diesen Link schicken könntest. Hättest du vielleicht noch den ein oder anderen Tipp/Motivation oder Hinweis für mich?

Gruß Markus

Antworten
swa00
  • Forum-Beiträge: 3.704

15.03.2017, 15:47:44 via Website

Hallo Markus ,

dies sind die Standards für Java
http://openbook.rheinwerk-verlag.de/javainsel/

Ansonsten kann ich auch nur die offizellen Seiten seitenes Google API anbieten
https://developer.android.com/guide/index.html

Sehr gut , um auch erst mal zu verstehen , was Android resp. Zygote VM unter Linux macht.
(Nicht unerheblich ! - Java ist nicht Java, und die Eigenschaften : z.b. GC, LifeCycle)

und halt stackoverflow
http://stackoverflow.com/

— geändert am 15.03.2017, 15:49:01

Liebe Grüße - Stefan
[ App - Entwicklung ]

Markus Joos

Antworten
Markus Joos
  • Forum-Beiträge: 7

21.03.2017, 15:55:50 via Website

Hallo Stefan,

nachdem ich mich hauptsächlich mit der Informationssuche beschäftigt habe, frage ich dich jetzt, wie man am besten da vorgehen sollte?
Ich denke, dass ich am besten mit dem Streaming Server beginnen sollte, weil das für mich am einfachsten klingt.
Die Idee dahinter ist mit einem einfachen Server zu programmieren, um die einfachsten Grundfunktionen kennenzulernen(wie verbindet er sich mit anderen Geräten usw) und dann nach auf einen Streaming Server umzuprogrammieren. Wie findest du die Idee bzw hast du eine andere Idee?

Grüße Markus

Antworten
swa00
  • Forum-Beiträge: 3.704

21.03.2017, 16:16:39 via Website

Hallo Markus,

also ich würde schon ein wenig anders vorgehen.

Bevor du einen Streamingserver ( zu dem komme ich noch später ) eigenständig aufsetzt, muss Du erst mal etwas
haben, womit du ihn füttern kannst .

Da würde ich erst mal damit beginnen , mich mit dem KameraModul auseinander zu setzen und
die Verarbeitung der einzelnen Frames realisieren.
Als nächstes sich dann damit beschäftigen, wie man diese Frames im Fehlerprotokoll bearbeitet und diese
dann komprimiert .

Erst dann bist du auch in der Lage den Streamingserver aufzusetzen.
Hier ist es wichtig , sich mit dem (Standard) Übertragungsprotokoll, und mit der Technik von UDP/TCP Sockets
auseinander zu setzen. und dabei kommt es auf sehr gutes Grundwissen von Threads an

Hast du dann das Ganze zusammen, dann kommt noch die Eigenart von Android dazu, denn sowas kann man
nicht im Dauerbetrieb laufen lassen (GC/Lifecycle). Da kämen dann noch Techniken wie Services resp. Processes
hinzu.

Im Grunde genommen ist Android eh das falsche System einen Videoserver aufzusetzen.

In den obigen Links hat man sich ja schon ein wenig mit auseinander gesetzt, aber wie ich das sehe , ist das
auch nichts Halbes und Ganzes. Es verdeutlicht nur , wie man es umsetzen könnte.
Allerdings SINN macht das Ganze unter Android nicht.

Da wärst du schneller mit einem einfachen schnöden Raspberry, mit Webcam und C++.
(Zumal dann das ding weitaus stabiler laufen würde)

— geändert am 21.03.2017, 16:17:54

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Markus Joos
  • Forum-Beiträge: 7

23.03.2017, 11:52:03 via Website

Hallo Stefan,

ich danke dir für deine Hilfe, denn endlich dadurch habe ich auch endlich eine Idee, wie ich endlich vorgehen muss bzw sollte. Ich habe immer recht planlos ohne eine eigentliche Idee versucht, da was zusammenzubasteln aber das auch ohne Erfolg.

Da würde ich erst mal damit beginnen , mich mit dem KameraModul auseinander zu setzen und
die Verarbeitung der einzelnen Frames realisieren.

Was meinst du damit, dass ich mich mit dem KamereaModul auseinader zu setzen ?

Im Grunde genommen ist Android eh das falsche System einen Videoserver aufzusetzen.
In den obigen Links hat man sich ja schon ein wenig mit auseinander gesetzt, aber wie ich das sehe , ist das
auch nichts Halbes und Ganzes. Es verdeutlicht nur , wie man es umsetzen könnte.
Allerdings SINN macht das Ganze unter Android nicht.
Da wärst du schneller mit einem einfachen schnöden Raspberry, mit Webcam und C++.
(Zumal dann das ding weitaus stabiler laufen würde)

Im Grund habe ich mir das gedacht, dass dies in Android doch recht schwer wird, aber leider muss ich da durch und mich ranhalten, denn das Projekt soll bis Juli fertig werden.

Grüße Markus

Antworten
Markus Joos
  • Forum-Beiträge: 7

23.03.2017, 12:13:54 via Website

Hallo Stefan,

mit Hilfe dieser Seite soll ich dann eine App schreiben, die Videos aufnehmen kann bzw wie soll ich das am besten verstehen?

Grüße Markus

Antworten
swa00
  • Forum-Beiträge: 3.704

23.03.2017, 12:30:51 via Website

Hallo Markus,

mit Hilfe dieser Seite soll ich dann eine App schreiben, die Videos aufnehmen kann bzw wie soll ich das am besten verstehen?

Das ist die Java API, wie du die Kamera initialisierst, die videaufnahme startest und wie du die einzelnen Frames
bekommst.
Wenn du das hast , kannst du dann diese in die Kompression schicken .

Und dann in das server modul ... usw...

Anm : Ein wenig happig dein Vorhaben bis Juli, du solltest Gas geben

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten