#linux #ffmpeg #raspberry-pi #v4l2
#linux #ffmpeg #raspberry-pi #v4l2
Вопрос:
Я ищу способ интегрировать параметры v4l2-ctl в ffmpeg проблема в том, что ffmpeg перезаписывает v4l2-ctl, и мне нужен конкретный параметр, имеющий v4l2-ctl: (мои команды v4l2-ctl :
v4l2-ctl -v ширина = 640, высота = 480, формат пикселей = 4 -p 30 -c h264_profile=0,repeat_sequence_header=1
Я хочу использовать эти параметры для прямой потоковой передачи с помощью FFMPEG, как я могу это сделать?
Спасибо!
Ответ №1:
Вы можете указать FFmpeg использовать video4linux2 (v4l2) в качестве входного «устройства» (которое он обрабатывает как демультиплексирующее устройство). В зависимости от вашего устройства, v4l2 может предоставлять видео в нескольких различных форматах (например, необработанное видео, например yuv420p, или сжатое видео, например h264, возможно, с помощью аппаратного ускорителя). Похоже, вы пытаетесь использовать h264, поэтому вы, вероятно, ищете что-то в этом роде:
ffmpeg -f video4linux2 -input_format h264 -video_size 640x480 -framerate 30 -i /dev/video0 out.h264
FFmpeg попросит v4l2 предоставить поток в кодировке h264 с заданной частотой кадров и размером в качестве входных данных для ffmpeg, который скопирует поток в файл out.h264
. Вам нужно будет указать формат вывода и параметры в зависимости от вашего варианта использования.
Примечание: предполагается, что ваше устройство ввода
/dev/video0
. Вы можете использоватьv4l2-ctl --list-devices
, чтобы увидеть, какие устройства доступны.
Из документации ffmpeg для v4l2 неясно, как предоставить дополнительные флаги (такие как h264_profile
и repeat_sequence_header
) для v4l2. FFmpeg предоставляет множество вариантов кодирования, но для этого может потребоваться указать необработанное видео -input_format
из v4l2 и вместо этого использовать кодировщик x264 от FFmpeg, который может быть намного медленнее, чем аппаратный кодировщик.
Отказ от ответственности: этот вопрос, вероятно, относится к суперпользователю или производству видео, а не к переполнению стека, поскольку он касается только инструмента командной строки.