LINUX.ORG.RU

Как записывать веб-камеру и одновременно отображать?

 , ,


1

3

Пытаюсь пристроить веб-камеру к видеонаблюдению и не все получается.

Есть команда записи:

ffmpeg -input_format mjpeg -video_size hd1080 -framerate 30 -f v4l2 -i /dev/video0 -vf "crop=500:500:680:400" test.avi

Есть команда просмотра с камеры:

ffplay -input_format mjpeg -video_size hd1080 -framerate 30 -f v4l2 -i /dev/video0 -vf "crop=500:500:680:400"

А как сделать, что бы одновременно и записывалось и воспроизводилось?

И еще в терминале каждую секунду повторяется сообщение: unable to decode APP fields: Invalid data found when processing input Оно вроде не ущемляет видео, но забивает сообщения в терминале, можно ли его как убрать?

А как сделать, что бы одновременно и записывалось и воспроизводилось?

Запусти две команды.

Оно вроде не ущемляет видео, но забивает сообщения в терминале, можно ли его как убрать?

Припиши в конец команды ’ 2> /dev/null’

anonymous
()
Ответ на: комментарий от anonymous

Запусти две команды.

тогда сообщает:

/dev/video0: Device or resource busy

victor79
() автор топика
Ответ на: комментарий от anonymous

Припиши в конец команды ’ 2> /dev/null’

Но тогда оно совсем ничего не сообщает. А в том и смысл, что из-за этого повторяющегося сообщения не видно других сообщений.

victor79
() автор топика

А как сделать, что бы одновременно и записывалось и воспроизводилось?

Через несколько секунд после начала записи, открыть записываемый файл на воспроизведение. Будет только вот эта небольшая задержка.

gag ★★★★★
()

В принципе такая команда работает:

ffmpeg -input_format mjpeg -video_size hd1080 -framerate 30 -f v4l2 -i /dev/video0 -y /1_work/test.avi -c copy -f mjpeg pipe:play | ffplay -i pipe:play

Но если бы можно было отдельно вызывать запись и отображение, то было бы лучше. Т.к. запись удобней делать кусочками в отдельные файлы, скажем по пол часа, а просмотр что бы был постоянным.

victor79
() автор топика
Ответ на: комментарий от victor79

Попробуй так:

ffmpeg \
    -loglevel -repeat+fatal \
    -input_format mjpeg -video_size hd1080 -framerate 30 \
    -f v4l2 \
    -i /dev/video0 \
    -vf "crop=500:500:680:400" \
    -c:v h264 -crf 22 -preset veryfast \
    -f segment -segment_time 00:30:00 \
    /1_work/test-%03d.mp4 \
    -c:v yuv4 -c:a pcm_s16le \
    -f avi pipe:1 \
    | ffplay pipe:0
anonymous
()
Ответ на: комментарий от anonymous

В таком виде разбивка на отрезки заработала, но без параметра loglevel, говорит что неправильный. Описание параметра loglevel говорит что немного по другому нужно, но все равно не получилось.

В параметре имени файла идет строка: «%03d» - как это расшифровывается? Если мне нужно в формате:

Год-Мес-Чис-Час-Мин-Сек
, то как это написать?

victor79
() автор топика

Можно использовать motion: sudo motion -c /path/to/motion.conf -n

В конфиге прописать

emulate_motion on
; для записи независимо от наличия движения

ffmpeg_output_movies on

max_movie_time 1800
; для нарезки по 30 мин

width 1280
height 720
; ну или сколько там надо

movie_filename %Y-%m-%d-%H-%M-%S

Я, правда, в таком режиме motion не использовал; скорее всего, нужны будут еще настройки. Зато никаких проблем с отдельной записью и просмотром.

zoon
()
Ответ на: комментарий от victor79

loglevel

Попробуй просто -loglevel fatal. Поведение может от версии ffmpeg зависеть. У тебя какая?

«%03d» - как это расшифровывается?

Это значит «три десятичные цифры с префиксными нулями». Типа 000, 001, 002, ..., 999, 1000, ....

Если мне нужно в формате: Год-Мес-Чис-Час-Мин-Сек

Тогда надо добавить опцию -strftime 1 и в имени использовать форматирование как в функции strftime() из сишной библиотеки: man 3 strftime. Формат для твоего шаблона будет таким: %Y-%m-%d-%H-%M-%S. Потренироваться можно на команде date в шелле. Там только перед форматом ещё + должен стоять: date +%Y-%m-%d-%H-%M-%S.

anonymous
()
Ответ на: комментарий от anonymous

Тут обнаружилась неприятная особенность. Что при работе в таком режиме камера в итоге зависает через ~3 часа. С чем связано не понятно и пока не понятно из-за того ли что в непрерывном режиме. Вебкамера Logitech B525.

victor79
() автор топика
Ответ на: комментарий от victor79

при работе в таком режиме камера в итоге зависает через ~3 часа.

это косяк «жадных» и «тупых» производителей. они ж не знали, что ты догадаешься web-камеру присобачить под видеонаблюдение… под видеонаблюдение они выпускают другие модели, но там и ценник другой ;)

короче совет такой: демонтируй оригинальный корпус – большая вероятность, что чип перегревается. делать это ты будешь на свой страх и риск. я так думаю, что финал будет один – вебка выйдет из строя. но во-первых я тебя предупредил, а во-вторых очень интересно сколько она выдержит – так, что не забудь отписаться «как и что, а главное когда»…

Другой Анонимус

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.