Как поделиться видеопотоком с WSL2 с помощью ffmpeg?

Вопрос или проблема

Большинство решений для использования камеры в WSL сводится к созданию собственного ядра WSL. Я реализовал это с помощью шагов, упомянутых в Запись видео с веб-камеры с помощью OpenCV в WSL2

Тем не менее, это сложно и требует много времени. Я хочу реализовать это с помощью потоковой передачи видео.

Метод совместного использования

Шаг 1: Выполните команду ниже в Windows, чтобы проверить все устройства камеры. Я вижу встроенную камеру "Integrated Webcam" (видео) в выводе.

ffmpeg -list_devices true -f dshow -i dummy

Шаг 2: Проверьте IP-адрес Ethernet-адаптера vEthernet (WSL). На моем компьютере это 172.24.176.1

Шаг 3: Выполните команду ниже в Windows, чтобы поделиться потоковой передачей видео.

ffmpeg -f dshow -i video="Integrated Webcam" -preset ultrafast -tune zerolatency -vcodec libx264 -f mpegts udp://172.24.176.1:5000

Тест

Выполните команду для воспроизведения потокового видео: ffplay udp://172.24.176.1:5000

Он может показывать видео, когда команда выполняется в терминале Windows (Win10).

Но он не может показать ничего, когда команда выполняется в терминале WSL (Ubuntu 22.04). Почему?

Ответ или решение

Как поделиться видеопотоком с WSL2 с использованием ffmpeg

При использовании Windows Subsystem for Linux 2 (WSL2) для передачи видеопотока с веб-камеры, часто возникают проблемы. В этой статье мы рассмотрим, как правильно настроить потоковую передачу с помощью ffmpeg, а также выясним, почему не удается воспроизвести поток в среде WSL, несмотря на его успешное отображение в Windows.

Шаг 1: Проверка доступных видео устройств

Первым шагом вам необходимо убедиться, что ваше устройство камеры распознано в Windows. Для этого выполните следующую команду в командной строке Windows:

ffmpeg -list_devices true -f dshow -i dummy

Эта команда выдаст список всех доступных устройств. Вы должны увидеть вашу интегрированную камеру, обозначенную как "Integrated Webcam (video)".

Шаг 2: Определение IP-адреса адаптера Ethernet WSL

Следующим шагом нужно получить IP-адрес виртуального Ethernet-адаптера WSL. Это можно сделать с помощью команды:

ipconfig

Ищите раздел, содержащий "vEthernet (WSL)" с IP-адресом, в вашем случае это 172.24.176.1.

Шаг 3: Запуск видеопотока в Windows

Теперь вы готовы начать трансляцию video потока с вашей камеры. Запустите следующую команду в терминале Windows:

ffmpeg -f dshow -i video="Integrated Webcam" -preset ultrafast -tune zerolatency -vcodec libx264 -f mpegts udp://172.24.176.1:5000

Эта команда позволяет ffmpeg использовать вашу веб-камеру и передает видеопоток по протоколу UDP на указанный IP-адрес.

Шаг 4: Тестирование на WSL

Для проверки корректности потока попробуйте использовать следующую команду в терминале WSL2:

ffplay udp://172.24.176.1:5000

В этом месте вы можете столкнуться с проблемой: хотя поток успешно воспроизводится в Windows, WSL не показывает ничего.

Почему WSL не может воспроизвести поток?

Причин, по которым воспроизведение не происходит, может быть несколько:

  1. Сетевая конфигурация: WSL работает в изолированной среде, что может приводить к сложностям в сетевом взаимодействии. Возможно, ваш WSL не имеет доступа к необходимым сетевым ресурсам.

  2. Проблемы с кодеками: Убедитесь, что необходимые кодеки установлены в вашей среде WSL. Используйте версии ffmpeg, которые поддерживают нужные вам форматы.

  3. Кодировщик и протокол: Возможно, вам нужно изменить кодировщик или настройки потока. Попробуйте использовать другой кодек или контейнер, например -f mpegts, и проверьте воспроизводится ли поток.

  4. Версия ffplay: Убедитесь, что вы используете актуальную версию ffplay, которая может правильно обработать поток.

Заключение

Использование видеопотока в WSL2 с помощью ffmpeg может быть затруднительным из-за сетевых и программных ограничений. Однако, следуя приведённым шагам и учитывая возможные проблемы, вы сможете настроить и проверить поток. Если возникнут дополнительные вопросы, не стесняйтесь искать помощь на форумах или в сообществе.

Надеюсь, что эта статья была полезной и помогла вам разобраться с задачей.

Оцените материал
Добавить комментарий

Капча загружается...