Что я могу сделать, чтобы настроить необработанный поток из Camlink 4K перед записью его в файл? Могу ли я использовать фильтры битового потока для ограничения частоты кадров и конечного битрейта?

#ffmpeg #camera #data-stream

Вопрос:

Вот настройка, у меня есть Acer Aspire 5 (мобильный Ryzen 3, встроенная графика) под управлением Manjaro (не спрашивайте) , беззеркальная зеркальная камера 4Kp24/1080p60 и USB-ключ Elgato Camlink 4K.

Понятно, что Acer вообще не может кодировать очень хорошо… так что, чтобы избежать беспорядка с вшивым сжатием… Я его не сжимаю! (Ну, я вроде как хочу, но да…)

Прямо сейчас мой ноутбук немного справляется с записью потока, но он часто пропускает… Что мне нужно знать: как отбросить все остальные кадры? (Использование копии-c не допускает фильтров… и -r 30 ничего не делает.)

Как мне ограничить битрейт? Поток Camlink составляет 200 Мбит/с, и мне нужно записывать не менее 50 минут, поэтому я беспокоюсь о размере файла, но если он будет разумно помещаться в 80 Гб пространства, тогда что угодно. (Просто настройка -b:v 25M, казалось, работала? Хотя я не уверен в последствиях этого)

Возможно ли вообще использовать FFMPEG для потоковой передачи файла по Ethernet на другой компьютер, используя FFMPEG для его кодирования? (Кроме того, Idk, если бы я попробовал, но если бы я мог получить Wi-Fi, было бы эффективно перенаправить порт на мой маршрутизатор и загрузить через Интернет???)

Наконец, в каком типе файла я должен сохранить поток? Попытка .raw не сработала, но если через Интернет-разумный вариант, то это не будет иметь значения, верно?

Заранее спасибо за вашу помощь. Вот наиболее функциональный набор параметров команд, которые я пробовал…

 ffmpeg -vaapi_device /dev/dri/renderD128 -f v4l2 -i /dev/video2 -c copy -b:v 20M -r:v 30 capture.mkv
 

Редактировать: Я забыл упомянуть, но у меня дома есть ГОРАЗДО лучший компьютер (Ryzen 9 3900x, RTX 3080), это для того, чтобы я мог записывать лекции и возвращать отснятый материал для редактирования и доработки.

Комментарии:

1. Возможно, вы сможете установить предпочтительную частоту кадров, используя -framerate при вводе, указанную перед -i аргументом. Что касается кодирования, то какой у вас встроенный графический процессор? Некоторые из них поддерживают кодирование с аппаратным ускорением H. 264/H. 265, в этом случае см. Эту вики-страницу .

2. @aergistal Это вега 3, она поддерживает аппаратное кодирование, но это… ужасно. Маркеры на белой доске заканчиваются неровными пятнами. Поэтому я хочу выполнить кодировку на своем рабочем столе, когда вернусь домой. Ваше предложение, похоже, ничего не меняет, на выходе по-прежнему отображается 60 кадров в секунду (59,94). Кроме того, в то время как битрейт говорит о 20000 кб/с, он сильно колеблется значительно выше этого…

3. Вы не можете передавать в потоковом режиме копирование ( -c copy ) и кодирование или фильтрацию ( -b:v 20M -r:v 30 ) одного и того же потока одновременно. Вот почему -b:v 20M -r:v 30 вас игнорируют, когда вы используете -c copy . Как упоминал aergistal, вы можете установить частоту кадров, размер видео и формат на уровне V4L2. См. Входные документы FFmpeg V4L2 . Показать полный вывод v4l2-ctl --device /dev/video2 --list-formats-ext

4. Возможно, рассмотрим архивный кодек, такой как FFV1 (без потерь) или ProRes . Вам нужно будет посмотреть, что вы получите с точки зрения производительности и размера файла.