Использование raspivid и cvlc вместе с низкой частотой кадров и полным полем зрения - PullRequest
0 голосов
/ 13 ноября 2018

У меня 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?

...