Как стать автором
Обновить

Android Camera2 API от чайника, часть 6, финальная Стрим видео — сначала кодировали, теперь декодируем

Время на прочтение28 мин
Количество просмотров5.4K
Всего голосов 5: ↑5 и ↓0+5
Комментарии5

Комментарии 5

Немного вопрос не по теме, а по:


Теперь в таргет адресе первого смартофона

А как бы стали делать автоматическое обнаружение других "ваших" телефонов внутри локальной сети без необходимости в коде и ручками вбивать IP?
Я у себя в похожей задаче сделал простой протокол обнаружения поверх udp multicast/broadcast. Но может есть какие-то решения из коробки вообще без костылей?

Можно сервер слепить, который будет телефоны регистрировать. Ну или, да, броадкастом по маске сети, чтобы устроить TCP рукопожатие. Еще может можно роутер спросить про список клиентов, чтобы уже адресно вызывать, кто из клиентов телефон.
А из коробки готовое — не знаю.

Я тоже понемногу разбираюсь с получением голого потока.
Возможно зря отказались в разделения пакета.
1) Что будет, если вы отправите пакет over mtu размер? Пакет просто дропнется на источнике?
2) То что куски пакетов не нужно пихать в разные буферы медиакодека это так. По хорошему бы наверное надо дожидаться всех частей одного пакета, склеивать их и отдавать в медиакодек.(но помним про реордеринг и потери в udp).

Посмотерел в wireshark… большие пакеты действительно сами фрагментируются и собираются.
На клиенте делать ничего не надо. Вопрос гарантируется ли собранный пакет или там могут быть не все фрагменты?

А там уже сетевой уровень по идее должен сам разбираться с пакетами. Наше дело просто в буфер положить или в поток, и с него в буфер. То есть нам самим уже с размером MTU и прочим можно не париться. Я с этим столкнулся еще когда надо было ровно по 1024 байта отправлять и получать для ESP сервера. Кладу, значит, по 1024, а на другой стороне вылазят какие-то кривые чанки по 3-5 килобайт. Как-то они в буфере уже по своему склеиваются, а нам туда доступа уже нет.
В итоге пришлось открывать сессию, отправлять 1024 байта, закрывать сессию.
Ну, и естественно, UDP не гарантирует. Просто в домашней сети это не критично вообще, но вот, если отправлять пакеты в Сеть… Там надо протокол верхнего уровня над UDP, типа RTP.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории