Использование ffmpeg для передачи видео Logitech C920 на два выхода: перекодирование в RTMP-поток и аппаратное кодирование в файл

Я пытаюсь использовать ffmpeg принимать видео от Logitech C920 и транслировать его в поток RTMP (например, Twitch). Но есть поворот: я хотел бы также сохранить в файл оригинальное видео с аппаратным кодированием 1080p.

Поэтому я хотел бы сделать оба из этих:

  1. Перекодируйте входные данные с разрешением 852x480 и загрузите их в URL RTMP с 1500 битрейтом.
  2. Сохранить исходный ввод в файл без перекодирования (C920 выполняет аппаратное кодирование с помощью кодека h.264)

Я попытался сохранить видео в файл без перекодирования, используя следующее:

ffmpeg -s 1920x1080 -framerate 30 -pixel_format uyvy422 -vcodec h264 -f avfoundation -i 'HD Pro' -copyinkf -vcodec copy out.mp4

Кажется, это почти работает. Индикатор веб-камеры включается, и после нескольких секунд работы получается массивный файл (1 ГБ или около того). Тем не менее, я не могу открыть файл с VLC. Я вижу предупреждение от ffmpeg:

[AVBSFContext @ 0x7fbd4fc3e9c0] No start code is found.
HD Pro: could not find codec parameters

Я на Mac с использованием ffmpeg 4.1.

Редактировать:

Похоже, что файл, который создает ffmpeg, не кодируется h264, а представляет собой необработанные данные пикселей. Я начинаю думать, что невозможно установить веб-камеру в режим h264 с Mac (в большинстве других случаев это делается в Linux с v4l2).

Любой, кто ответит на этот вопрос, был бы рад решению, включающему и Linux. Особенно, если я могу использовать загрузочный живой USB.

0 ответов

Другие вопросы по тегам