Как мне транслировать видео с iPhone, выступающего в роли сервера?

Я работаю над приложением для iOS, где один iPhone должен транслировать записи своей камеры на другой iPhone (для простоты, оба находятся в одной сети Wi-Fi).
Потоковое должно работатьбез физическое межсоединение (например, сервер, используемый для маршрутизации потока клиентам). На самом деле,запись айфона должна быть на сервере который обслуживает другой iPhone (или несколько других устройств iOS в сети) с прямой трансляцией.

Итак, что мне нужно сделать, это:

Получить живые фотографии с камерыОбработайте эти данные, если это необходимоОтправить кадр за кадром подключенным клиентам (TCP?)Получите кадры на клиенте и отобразите их в реальном времени

Что у меня есть и с чем я застрял:

Я уже решил проблему 1. Я используюAVCaptureSession который постоянно возвращаетсяCMSampleBufferRefs (найденоВот).

Я еще не уверен, что мне нужно делать сCMSampleBufferRef, Я знаю, как превратить его вCGImage илиUIImage (спасибо великой записи блога Бенджамина Лулье2), но я понятия не имею, что конкретно мне нужно отправить и нужно ли мне как-то кодировать кадры.
Как упомянуто @jab в приведенном выше связанном ответе (это) можно записать эти образцы в файл с одним или несколькимиAVAssetWriter«S. Но с другой стороны он говорит, что эти 5-секундные фрагменты видео должны быть загружены на сервер, который делает из них потоковый файл фильма (и этот фильм затем может быть передан на устройство iOS с помощьюHTTP Live Streaming Я предполагаю).

Как я уже указывал, мое приложение (то есть устройство захвата видео "серверное устройство") имеет один или несколько клиентов, подключенных к нему, и ему необходимо отправлять видеокадры в режиме реального времени к ним.
Одна мысль, которая пришла мне в голову, заключается в использовании простогоTCP соединение, где сервер отправляет каждый кадр всериализованная форматировать подключенным клиентам в цикле. Более конкретно: когда один буферизованный кадр успешно отправляется клиенту, сервер принимает самый последний кадр в качестве следующего, который должен быть отправлен.
Теперь: это правильная мысль, как это должно работать? Или есть другой протокол, который гораздо лучше подходит для такого рода задач?
Помните: я хочу сделать это простым (простым для меня, то есть, чтобы мне не нужно было изучать слишком много новых аспектов программирования) и быстрым. Я уже знаю кое-что о TCP, я написал серверы и клиенты с ним в школе вC, поэтому я бы предпочел применить знания, которые у меня есть сейчас, к этому проекту ...

И последнее, но не менее важное, принимающий клиент:
Я представляю, если я действительно собираюсь использоватьTCP В связи с тем, что на стороне клиента я получаю от сервера кадр за кадром, приведу пакет считанных байтов в используемый формат (CMSampleBuffer, CGImage, UIImage) и просто отобразить его наCALayer или жеUIImageView, правильно? Эффект фильма можно получить, просто постоянно обновляя вид изображения.

Пожалуйста, дайте мне несколько идей о том, как достичь этой цели. Это очень важно, потому что это часть моего школьного выпускного проекта ... Любой пример кода также приветствуется ;-) Или просто направьте меня на другой сайт, учебник, Stackoverflow-answer и т. Д.

Если у вас есть какие-либо вопросы по этому поводу, просто оставьте комментарий, и я обновлю пост.

Ответы на вопрос(2)

Ваш ответ на вопрос