ПАРАМЕТРЫ FFMPEG V4L2

#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, который может быть намного медленнее, чем аппаратный кодировщик.

Отказ от ответственности: этот вопрос, вероятно, относится к суперпользователю или производству видео, а не к переполнению стека, поскольку он касается только инструмента командной строки.