Вы задаёте слишком основательные вопросы на ресурсе для новичков с поверхностными знаниями.
1. Зачем вам низкоуровневая работа с выводом видео прямо на opengl-контекст, не проще ли отдать эту задачу специализированным средствам, например, VLC или mpv?
2. Для того, чтобы вещать видео с низкой задержкой, не нужен какой-то высокоуровневый надёжный транспорт — вещайте MPEG-TS через UDP. Если всё же сильно хотите улучшить доставку картинки при высокой потере пакетов, то присмотритесь к kcptun или QUIC.
3. Верно/верно.
4. Если речь именно о клиенте (например, поток слишком сложен для декодирования в реальном времени), то обычно для такого используют стандарты «слоевого» кодирования. Для H.264 это H.264-SVC.
Magnoliya, VPN вам позволит создать локальную сеть, и неважно, за NAT ли компьютер, или нет. При настройке VPN указывается диапазон внутренних адресов, каждый хост, входящий в сеть VPN, получит IP-адрес из этого диапазона, по нему и следует обращаться к устройствам.
Прочитите любую статью о VPN, хоть на Википедии, это даст понимание технологии в общих чертах.
Если задача состоит в прослушивании трафика устройства в пределах одной сети (например, нужно однократно захватить трафик какой-то программы или сервиса), то самый простой вариант — настроить на устройстве в домашней сети (устройство должно быть доступно по Wi-Fi) шлюз с захватом трафика (tcpdump или wireshark), а в настройках сети Wi-Fi на телефоне прописать IP-адрес этого устройства в качестве шлюза.
Никаких дополнительных программ на телефоне для этого не нужно, всё делается штатными методами.
Заблокировано, по оценке навскидку, 30-40% всего интернета
Заблокированы ≈64400 портов из 65535
Заблокированы характерные TLS-фингерпринты популярных прокси-программ
Вручную отслеживают аномалии трафика (посылка и получение на один IP-адрес в течение 30+ минут) и блокируют IP-адреса, но чаще всего — весь диапазон адресов
nilas, я перечислил проекты со встроенным пробивом NAT, которые установят соединение автоматически. В Wireguard он не встроен, но его тоже можно использовать для установки прямого соединения между двумя узлами, но придётся все настраивать вручную: если NAT не сохраняет порт источника, но создаёт маппинг вне зависимости от адреса и порта назначения, то придётся вручную запускать stun-клиент, узнавать порт, прописывать его, поддерживать его «открытость» в фоне.
Аналогично и OpenVPN — его также можно настроить на фиксированные порты UDP.
P.S. если вам интересно, я разрабатываю практическую наглядную статью по пробиву NAT на примере Github Actions. Надеюсь, будет готово к концу этого месяца.
nilas, для описываемого вашего сценария нет устоявшегося термина. Программа ngrok, созданная для таких туннелей, описывает себя как "globally distributed reverse proxy", а localtunnel как "Localtunnel allows you to easily share a web service on your local development machine".
Также неоднократно встречал фразу "publish port behind NAT".
В ssh-j.com я написал "expose port behind NAT".
Но это всё не пробив NAT (NAT punch/NAT traversal). Смысл пробива именно в установке прямого соединения между узлами.
Пожалуйста, давайте не будем превращать комментарии в чат. Ознакомьтесь со статьями на эту тему. Прочтите how NAT traversal works от Tailscale — одна из понятных и полных статей на эту тему. Посмотрите сопутствующий материал, загляните в реализацию WebRTC и аудиозвонков/видеочатов в браузере, вроде Jitsi Meet — они устанавливают соединения напрямую, когда это возможно, даже если оба клиента находятся за NAT.
Статья будет позже.