Ich werde eine Anwendung in C++ erstellen, die Strom von Fotos erstellt und dann sendet sie als Video-Stream zu einer anderen Anwendung. irgendwelche Ideen über wie kann ich anfangen? was ich meine ist, welche Bibliotheken soll ich verwenden und was die Codierung? Ich denke an MJPEG und UDP oder RTP als Protokoll .... jede Hilfe würde sehr geschätzt werden.Video-Streaming mit C++
Antwort
Wenn Ihre Eingabedaten nur eine Reihe zufälliger Bilder sind, nicht Video, werden Sie kein "Video-Streaming" durchführen. Du wirst nur eine Reihe voller Bilder senden. Es ist nicht notwendig, die Videokodierungstechnologie zu verwenden, sondern einfach die Übertragung der Bilder zu ermöglichen. Video-Encoder verlassen sich darauf, dass jeder Frame verschiedene Beziehungen zum vorherigen Frame hat, wie es im tatsächlichen Video üblich ist. Für die Eingabe von zufälligen Bildern werden sie nicht so viel komprimieren können und eine Einzelbildkomprimierung (z. B. JPEG/PNG/was auch immer) wird sehr wahrscheinlich bereits auf Ihre Eingabedaten angewendet.
Wahrscheinlich am einfachsten, den Inhalt jeder Datei zusammen mit dem ursprünglichen Dateinamen zu senden und den empfangenden Client die Datei auf der Festplatte neu erstellen und vorhandene diskorientierte Bibliotheken zum Öffnen und Decodieren des Abbilds verwenden.
Sie sollten wahrscheinlich nur TCP für diese verwenden, nichts in Ihren Anforderungen, die angeben, dass Sie die komplizierteren und fehleranfälligen UDP/RTP-basierten Lösungen verwenden müssen.
Verwenden Sie ffmpeg library für die Codierung Ihres Streams und verwenden Sie RTP/RTSP-Stack, um sie zu streamen.
Für den Streaming-Teil können Sie Live555 verwenden. Es sollte alles abdecken, was Sie brauchen. Das lässt immer noch das Problem der Generierung eines MJpeg Stream. Ich kann nur hier vermuten, FFMpeg könnte ehat Sie suchen (wie ich sehe, deckt es auch Streaming, so dass Sie nur diese benötigen). Ich denke, dass MJpeg sehr für Ihre Anwendung geeignet ist. Was TCP oder UDP betrifft, hängt davon ab, wie Sie es verwenden möchten. UDP macht Sinn wenn du deinen Stream Multicast machen willst, ansonsten würde ich TCP bevorzugen, weil es zuverlässiger ist.
Hoffe, dass einige nützliche Tipps sind.
- 1. RTSP Live-Videostreaming
- 2. udp videostreaming in gstreamer mit python
- 3. Wo erhalten Sie Live-Videostreaming-Beispiele (GStreamer)?
- 4. Live-Videostreaming von einer drahtlosen IP-Kamera auf Android-Handy
- 5. Wie sende ich Videostreaming an WOWZA Server mit RTSP von iOS App?
- 6. nodeJS Videostreaming, Verbindung wird nicht geschlossen, wenn Benutzer die Verbindung trennt oder auf andere Seite verschiebt
- 7. LibXml2 mit C/C++
- 8. verschlüsseln- entschlüsseln mit AES mit C/C++
- 9. Kommunikation mit Ports mit C++ oder C#?
- 10. mit scanf in C/C++
- 11. Mischen C++ String mit c
- 12. C/C++ Speicherverlust (mit PCRE)
- 13. Indizierung mit Zeiger C/C++
- 14. Mit C#
- 15. Mit C#
- 16. Datei mit libcurl in C/C++ herunterladen
- 17. Schreiben in Datei mit C und C++
- 18. Zeichnen auf C# Bitmap mit C++
- 19. Wrapping eines C++ Codes mit Objective-C++
- 20. GDB mit C++, die C-Code ruft
- 21. Zuordnung von Modbus-Registeradresse mit C/C++
- 22. Locking Dateien in Linux mit C/C++
- 23. Namenskonvention in Objective C/C, beginnen mit "_"?
- 24. C GUI, mit einem C++ - Backbone?
- 25. ObjC/C/C++ hochauflösender Timer mit Callback
- 26. Kombinieren C++ - Algorithmus mit C# GUI
- 27. C++ api mit Callbacks zu objective-C++
- 28. C++ - Programm mit C# GUI verbunden
- 29. PHP C/C++ - Erweiterungsmodule mit SWIG erstellen
- 30. im Gespräch mit C von C#
Die Ausnahme ist "Motion JPEG" (MJPEG), das ist eigentlich nur eine Folge von JPEG-komprimierten Bildern mit jeweils einer kleinen Kopfzeile. Meine Canon Digitalkamera hat Videos in diesem Format aufgenommen. –
Der Unterschied zwischen mehreren Bildern und Videostreams (mit Ausnahme der Art der Komprimierung) besteht darin, dass Sie im Videostream eine Zeitsynchronisierung durchführen. –