Я пытаюсь обработать видео с помощью OpenCV в Python, а затем отправить каждый кадр на виртуальную камеру (т. Е. V4l2loopback). Я видел вопросы, задаваемые о том, где вывод OpenCV передается в ffmpeg и сохраняется в файл, и другие вопросы, когда видеофайл передается в v4l2 с использованием ffmpeg, но не возникает вопросов, где эти два комбинируются. Я могу сделать любую из двух указанных выше вещей самостоятельно, но не в сочетании.
Мой код Python использует подпроцесс для передачи каждого кадра в ffmpeg. Команда ffmpeg для передачи вывода OpenCV в файл .mp4:
ffmpeg -y -f rawvideo -vcodec rawvideo -s 1280x720 -pix_fmt bgr24 -i - -vcodec libx264 -crf 0 -preset fast output.mp4
Это работает, и я проверил это.
Команда ffmpeg для передачи видеофайла в виртуальную версию v4l2 камера
ffmpeg -re -i input.mp4 -map 0:v -f v4l2 /dev/video0
Это также работает, и я проверил это.
Я попытался объединить две вышеупомянутые команды и получил
ffmpeg -y -f rawvideo -vcodec rawvideo -s 1280x720 -pix_fmt bgr24 -i - -vcodec libx264 -crf 0 -preset fast -map 0:v -f v4l2 /dev/video0
, но я получаю следующая ошибка
[NULL @ 0x55a12fcc60] Невозможно найти подходящий выходной формат для '': неверный аргумент
Я был бы рад, если кто-нибудь мог бы помочь мне разобраться в этом .
Спасибо.