У меня Raspberry Pi с модулем камеры OV5647, с которого я использую потоковое видео.
raspivid
принимает параметр командной строки с именем --mode, -md
, который предлагает несколько режимов, в которых может работать камера
Mode Size AR Frame rates FOV Binning
0 automatic
selection
1 1920x1080 16:9 1-30fps Partial None
2 2592x1944 4:3 1-15fps Full None
3 2592x1944 4:3 0.1666-1fps Full None
4 1296x972 4:3 1-42fps Full 2x2
5 1296x730 16:9 1-49fps Full 2x2
6 640x480 4:3 42.1-60fps Full 2x2 plus skip
7 640x480 4:3 60.1-90fps Full 2x2 plus skip
Я предпочел бы иметь низкую частоту кадров и хорошее качество изображения вместо высокого FPS.
Для видео высокого качества я хочу транслировать в Full HD 1920x1080Тем не менее, режим 1
камеры дает только частичное поле зрения, которое значительно уменьшает снимаемую область, мне действительно нужен полный угол обзора.
Я бы хотел выбрать режим 2
, чтобы яможет транслировать уменьшенное видео в Full HD со скоростью 15 FPS.
И все же я вынужден использовать режим 4
, поскольку он дает мне частоту кадров 25 кадров в секунду.
Проблема заключается в следующем:
raspivid -o - \
-t 0 \
-n \
-hf -vf \
-g 25 \
-pf high \
-md 4 \
-fps 25 \
-b 10000000 \
| cvlc -vvv \
stream:///dev/stdin \
--no-audio \
--sout '#standard{access=http,mux=ts,dst=:8090}' \
:demux=h264
Эта командаработает.Он устанавливает камеру в режим 4
, использует частоту кадров 25
и передает видео в clvc
.
Когда я устанавливаю режим на 2
и понижаю частоту кадров на 15
, затемэто больше не работает.
По какой-то причине cvlc
ожидает частоту кадров 25, регистрируя множество предупреждений в соответствии с
[73b02cf8] main mux warning: late buffer for mux input (17958)
[73b02cf8] main mux warning: late buffer for mux input (2025)
[73b02cf8] main mux warning: late buffer for mux input (14107)
[73b02cf8] main mux warning: late buffer for mux input (2890)
[73b02cf8] main mux warning: late buffer for mux input (20115)
Также существуетв начале информационное сообщение о том, что
[73b12410] main decoder debug: using packetizer module "h264"
[73e00568] main input debug: switching to sync mode
[73b088b8] h26x demux debug: using 25.00 fps
Итак, я предполагаю, что я получаю эти late buffer
предупреждения, потому что raspivid отправляет на несколько кадров в секунду, и для кодера недостаточно данных.Видео останавливается примерно каждые 10 секунд, что делает его непригодным для использования.Когда он движется, он ускоряется.
Как я могу сказать энкодеру h264, что он должен работать при входе-выходе 15 FPS вместо 25 FPS?