ich gepostet auf dem Apple-Entwicklerforum, wir an einem lebhaften (entschuldigen Sie das Wortspiel) Diskussion tragen. Dies war die Antwort auf jemanden, der eine ähnliche Idee vorgebracht hat.
Ich denke, korrigieren Sie mich, wenn ich falsch liege, und geben Sie uns ein Beispiel, wenn Sie nicht zustimmen, dass die Erstellung eines mpeg ts aus dem rohen h264, die Sie von AVCaptureVideoDataOutput erhalten, kein ist einfache Aufgabe, es sei denn, Sie transcodieren mit x264 oder etwas ähnliches. Nehmen wir einmal an, Sie könnten einfach mpeg ts-Dateien bekommen, dann wäre es eine einfache Sache, sie in einem m3u8-Container zu kompilieren, einen kleinen Webserver zu starten und sie zu bedienen. Soweit ich weiß, und es gibt viele, viele Anwendungen, die es tun, localhost Tunnel aus dem Gerät verwenden kein Problem ablehnen. Also vielleicht könntest du aus dem Gerät H1 generieren, ich frage die Leistung, die du bekommen würdest.
Also weiter zu Technik Nummer 2 Immer noch mit AvCaptureVideoDataOutput, Sie erfassen die Frames, wickeln sie in ein paar nette kleine Protokoll, JSON oder vielleicht etwas esoterischer wie Bencode öffnen Sie einen Socket und senden Sie sie an Ihren Server. Ahh ... viel Glück besser haben ein schönes robustes Netzwerk, da das Senden unkomprimierter Rahmen auch über Wi-Fi wird Bandbreite erforderlich ist.
Also weiter zu Technik Nummer 3.
Sie schreiben einen neuen Film mit Avassetwriter und lesen aus der Temp-Datei mit Standard-C-Funktionen, das ist in Ordnung, aber was Sie haben, ist roh h264, der mp4 ist nicht vollständig, so dass es keine Moov Atome hat, jetzt kommt die Spaßteil, der diesen Titel regeneriert. Viel Glück.
auf So 4 bis tecnique, dass einigen Verdienst tatsächlich zu haben scheint,
Wir erstellen nicht einen, sondern zwei Avassetwriter, wir verwalten sie mit einer gcd dispatch_queue, da Avassetwriter nach Instanziierung nur einmal verwendet werden können, wir starten den ersten auf einem Timer, nach einer vorbestimmten Zeit von 10 Sekunden die zweite, während sie die erste niederreißt. Jetzt haben wir eine Reihe von .mov-Dateien mit vollständigen MOOV-Atomen, von denen jedes komprimiertes h264-Video enthält. Jetzt können wir diese an den Server senden und sie zu einem kompletten Videostream zusammenstellen. Alternativ könnten wir einen einfachen Streamer verwenden, der die mov-Dateien aufnimmt und sie im rtmp-Protokoll mit librmp umschließt und sie an einen Medienserver sendet.
Könnten wir einfach jede einzelne mov-Datei an ein anderes Apple-Gerät senden und so die Geräte-zu-Gerät-Kommunikation erhalten, diese Frage wurde viele Male falsch interpretiert, ein anderes iPhone-Gerät im selben Subnetz über WLAN zu finden ist ziemlich einfach und könnte getan werden. Ein anderes Gerät über TCP-Verbindung über TCP zu lokalisieren ist fast magisch. Wenn es möglich ist, ist es nur in Zellennetzwerken möglich, die adressierbare IPs verwenden und nicht alle gängigen Träger.
Sagen Sie könnten, dann haben Sie ein zusätzliches Problem, da nicht der AVFoundation Video-Player in der Lage, den Übergang zwischen so vielen verschiedenen separaten Filmdateien zu handhaben. Sie müssten Ihren eigenen Streaming-Player schreiben, der wahrscheinlich auf der ffmpeg-Decodierung basiert. (Das funktioniert ziemlich gut)