Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: motion или ffmpeg? подскажите  (Прочитано 6209 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dad495

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
    • FB
motion или ffmpeg? подскажите
« : 15 Апреля 2013, 11:51:52 »
Привет, друзья!

Имеется задачка: записывать через вебкамеру видео, система скрытого видеонаблюдения. Изначально пользовался ffmpeg`ом и все было хорошо, но единственные критерий видео - качество. Поэтому писал видео без сжатия, размер был велик, но качество и стабильность на высоте.
Решил попробовать использовать motion с ее детектором движения. Но мне не понравилось качество видео, если ставить кодеки mpeg1, mpeg4,msmpeg4 и flv - все они ухудшают качество. Попробовал использовать ffv1 (эксперементальный) - качество хорошее, но иногда появляются разноцветные помехи, т.к. mov тестовый он не подходит. Не хочу чтобы они меня подвели.

На данный момент я решил motion использовать как детектор движения, чтобы в случае движения запускался скрипт записи видео, при пропадании движения скрипт останавливал запись. Немного костыльно, поэтому хочу посоветоваться, может есть все таки в motion настройки, которыми можно улучшить качество?

Прошу только не предлагать аврег и прочие системы записи, к гуглу тоже прошу не слать, т.к. хотел бы услышать мнение или просто совет.

Оффлайн igor822605

  • Участник
  • *
  • Сообщений: 229
    • Просмотр профиля
Re: motion или ffmpeg? подскажите
« Ответ #1 : 15 Апреля 2013, 18:04:15 »
На данный момент я решил motion использовать как детектор движения, чтобы в случае движения запускался скрипт записи видео, при пропадании движения скрипт останавливал запись. Немного костыльно, поэтому хочу посоветоваться, может есть все таки в motion настройки, которыми можно улучшить качество?
По моему использовать одновременно устройство video0 программой motion и чем Вы в своем скрипте будете записывать не выйдет. Я к мотион две камеры подключаю и пишу при движении. Почему-то с одной камеры всегда есть ложные срабатывания из-за разноцветных помех.

Оффлайн dad495

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
    • FB
Re: motion или ffmpeg? подскажите
« Ответ #2 : 16 Апреля 2013, 09:18:17 »
Вот как раз я не учел что motion блокирует камеру. Но мне удалось разобраться с качеством. Надеюсь кому-нибудь это пригодится.

Во всех интернет-примерах и по дефолту в motion.conf прописаны 2 параметра, отвечающие за качество видео:
ffmpeg_bps 500000
ffmpeg_variable_bitrate 0

Я изменил на:
ffmpeg_bps 0 (т.е. отключил параметр)
ffmpeg_variable_bitrate 2 (как сказано в комментарии к параметру, от 2 до 31, где 2 лучшее качество, 31 худшее)

Кодек (параметр ffmpeg_video_codec) установил msmpeg4(или mpeg4, разницы особо не заметил). И вуаля - видео получилось четким, без квадратов, и занимающим не много места.

Спасибо за ваши ответы!

Оффлайн Bamb

  • Активист
  • *
  • Сообщений: 798
  • Arch Linux
    • Просмотр профиля
Re: motion или ffmpeg? подскажите
« Ответ #3 : 17 Апреля 2013, 00:16:42 »
Изначально пользовался ffmpeg`ом и все было хорошо, но единственные критерий видео - качество. Поэтому писал видео без сжатия, размер был велик, но качество и стабильность на высоте.
Что-то подсказывает, что вы даже не пытались разобраться с ffmpeg. Почему бы изначально не указать в параметрах ffmpeg для нужного видеокодека фиксированное качество или требуемый битрейт, размер кадра и частоту кадров? Для систем видеонаблюдения, кстати, fps как правило невысок.

Цитировать
кодеки mpeg1, mpeg4,msmpeg4 и flv - все они ухудшают качество.
Любой не raw-кодек снижает качество, но качество выходного видео при использовании конкретного кодека всегда прямо пропорционально скорости передачи данных и, как следствие, размеру видео.

mpeg1 - не в счет, применялся в VCD;
mpeg4 - XviD;
msmpeg4 - DivX от мелкософта;

h264 позволяет достичь наивысшего качества при больши́х коэффициентах сжатия. Однако считается "тяжелым" для железа кодеком.

ffmpeg -f v4l2 -i /dev/video0 -vcodec libx264 -s 640x480 -aspect 4:3 -vb 300k -r 10 -g 100  -y video.mkvМожно добавить, допустим, -threads 2 для двухпоточного кодирования.


Оффлайн dad495

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
    • FB
Re: motion или ffmpeg? подскажите
« Ответ #4 : 17 Апреля 2013, 16:42:18 »
Что-то подсказывает, что вы даже не пытались разобраться с ffmpeg. Почему бы изначально не указать в параметрах ffmpeg для нужного видеокодека фиксированное качество или требуемый битрейт, размер кадра и частоту кадров? Для систем видеонаблюдения, кстати, fps как правило невысок.
Как не пытался разбираться, если до этого только с ffmpeg и работал, у меня есть рабочий вариант с нужным качеством. Что-то подсказывает, вы не читали текст))

Моя цель - сэкономить место за счет съемки только нужного материала без потери качества. Для этого я решил использовать motion, чтобы записывать только движения. Теперь я разобрался как улучшить качество снимаемого видео в motion, о чем написал выше.

Но спасибо вам за советы!

Оффлайн Bamb

  • Активист
  • *
  • Сообщений: 798
  • Arch Linux
    • Просмотр профиля
Re: motion или ffmpeg? подскажите
« Ответ #5 : 18 Апреля 2013, 13:19:01 »
Несвязно как-то всё у вас, но оффтоп разводить не стану.

Оффлайн dad495

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
    • FB
Re: motion или ffmpeg? подскажите
« Ответ #6 : 19 Апреля 2013, 09:43:56 »
Соглашусь. Сам перечитал и понял что несколько криво выразился. Ссори. Тема закрыта.

Оффлайн arch!ver

  • Старожил
  • *
  • Сообщений: 1260
    • Просмотр профиля
Re: motion или ffmpeg? подскажите
« Ответ #7 : 21 Апреля 2013, 10:07:02 »
h264 позволяет достичь наивысшего качества при больши́х коэффициентах сжатия. Однако считается "тяжелым" для железа кодеком.
Позволяет, но при условии включения CABAC < -coder 1 >, а это значит что профиль кодирования видео должен быть установлен,
- и не ниже чем профиль < -profile main >

dad495,
смотрите здесь https://help.ubuntu.ru/wiki/ffmpeg
я бы попробовал так:
ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -profile:v main -s 640x480 -sar 1:1 -aspect 4:3 -b:v 1000k -r 15 -g 100 -bf 3 -keyint_min 5 -direct-pred 1 -me_method hex -me_range 16 -subq 6 -trellis 2 -qmin 4 -y video.mkv
По ходу, - это минимально приемлемый вариант по качеству... Минимальный фреймрейт (кадр/сек) = 15 < -r 15 >. Минимальный битрейт = 1000-1500 килобит/сек (1-1,5 Мегабит/сек). При меньшем битрейте чем 1000k - качества не будет... Примерный размер файла за 1 час записи будет от 400-500мб - не более.
Можно добавить флаги поиска векторов движения и флаги параметров поиска макроблоков:
ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -profile:v main -s 640x480 -sar 1:1 -aspect 4:3 -b:v 1000k -r 15 -g 100 -bf 3 -keyint_min 5 -direct-pred 1 -me_method hex -me_range 16 -subq 6 -mbd rd -flags +mv4+qpel+qprd+mv0 -trellis 2 -qmin 4 -y video.mkv
Если видео чёрно-белое, то парметр <cmp> можно отключить (добавить параметр < -cmp 0 > в строку задачи)
« Последнее редактирование: 21 Апреля 2013, 14:55:20 от archiver »

 

Страница сгенерирована за 0.068 секунд. Запросов: 25.