Загрузка данных


**Да, собрать mpv под Android возможно**, но есть важный нюанс: сам по себе репозиторий `mpv-player/mpv` — это лишь консольный видеодвижок (libmpv). Для Android существует отдельный официальный репозиторий, который объединяет этот движок и графический интерфейс (обертку) для Android.

Вот подробности о сборке и о том, стоит ли это использовать для БПЛА.

### Репозиторий для Android
Проект называется **mpv-android**.
*   **GitHub:** `mpv-android/mpv-android`

Этот репозиторий содержит скрипты для автоматической кросс-компиляции ядра mpv, FFmpeg и других зависимостей под архитектуры ARM/ARM64, а также саму Android-обертку на Java/Kotlin с использованием `SurfaceView` для вывода видео.

### Как собирается (кратко)
Сборка происходит не через Android Studio напрямую, а через специализированные скрипты (обычно `./buildscripts/build-media` и затем сборка APK через Gradle). Вам потребуется Android NDK и SDK. Процесс занимает продолжительное время, так как приходится компилировать статические библиотеки FFmpeg и mpv из исходников.

### Подходит ли mpv-android для видеопотока H.265 с БПЛА (wfb-ng)?

Если ваша цель — получить минимальную задержку на Android-устройстве (телефоне/планшете), то **mpv — это рабочий, но не самый оптимальный вариант**. 

Вот почему:

1.  **Аппаратное декодирование (MediaCodec):** На Android mpv использует `--hwdec=mediacodec`. Это работает и дает низкую нагрузку на процессор, но реализация MediaCodec в Android имеет свой внутренний буфер. Из-за этого задержка декодирования на Android всегда будет чуть выше (на 1-3 кадра), чем при прямом выводе через DRM/KMS на Linux-одноплатниках (Raspberry Pi).
2.  **Сетевой буфер Android:** Операционная система Android довольно агрессивно управляет сетью и батареей. Прием сырых UDP-пакетов в фоне может throttled'иться (замедляться) системой.
3.  **Интерфейс:** В mpv-android нет удобного механизма автоматического переподключения к RTP-потоку при потере пакетов (что часто бывает с дронами). Вам придется настраивать `mpv.conf` для работы с потоком.

### Как настроить mpv-android под wfb-ng (если вы всё же решите собрать)

Чтобы mpv на Android играл RTP-поток с минимальной задержкой, вам нужно будет прописать конфиг (`mpv.conf`), который попадет внутрь APK или будет читаться из памяти устройства:

```ini
# Отключаем буферизацию
profile=low-latency
no-cache
no-demuxer-thread
untimed=yes

# Аппаратное декодирование H.265
hwdec=mediacodec
vd-lavc-dr=yes

# Отключаем звук (его нет в wfb-ng)
ao=null

# Не останавливаться при ошибках парсинга потока
stream-lavf-o=fflags=nobuffer
```

### Лучшие альтернативы для Android

Если ваша задача — именно вывод видео с БПЛА на Android с минимальным лагом, лучше обратить внимание на проекты, которые написаны специально для этого:

1.  **FpvVrApp** (`Consti10/FpvVrApp`)
    *   **Плюсы:** Написан специально для FPV. Использует низкоуровневый Android ExoPlayer/MediaCodec с минимальными буферами. Умеет автоматически реконнектиться к `rtp://...`. Поддерживает стерео (VR) режим.
    *   **Сборка:** Собирается через Android Studio стандартно, гораздо проще, чем mpv-android.

2.  **OpenHD Android** (`OpenHD/OpenHD-Android`)
    *   **Плюсы:** Полноценная наземная станция. Принимает видео, накладывает OSD (телеметрию) поверх видео.
    *   **Сборка:** Довольно тяжелый проект, но готовые APK обычно есть в Releases.

3.  **Свой плеер на ExoPlayer**
    *   Многие разработчики дронов просто берут библиотеку **Google ExoPlayer** (которая поддерживает RTP/UDP и H.265 MediaCodec) и пишут свою Activity на Kotlin/Java размером в 50 строк кода. Это часто проще, чем пытаться подружить консольный mpv с Android UI и жизненным циклом Activity.

**Резюме:** Собрать `mpv-android` можно, и он сможет проиграть `rtp://0.0.0.0:5600` с H.265, но для дрона это "из пушки по воробьям". Если вам нужен просто плеер — возьмите готовый FpvVrApp. Если вы делаете свое приложение — используйте ExoPlayer.