#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 . Вам нужно будет посмотреть, что вы получите с точки зрения производительности и размера файла.