nataraj: (Бритый небритый)
[personal profile] nataraj
Карты видеозахвата и веб-камеры имеют фиксированное количество режимов работы. В смысле разрешений и форматов данных. Посмотреть на них можно с помощью утилиты v4l2-ctl: v4l2-ctl --list-formats-ext

Нумерации или кодовых названий режимы не имеют, при захвате задавать режим следует по трем координатам: Width,Heigth,OutputFormat. При работе с mencoder'ом при этом это выглядит примерно так:

mencoder tv:// -tv driver=v4l2:device=/dev/video0:input=0:outfmt=mjpeg:width=768:height=572

При работе с avconv (ffmpeg)

avconv -f video4linux2 -input_format mjpeg -s 768x576 -i /dev/video0

при этом в работе avconv'е мной обнаружено две мисфичи:

1. Для некоторых карт avconv неправильно инициализирует какие-то параметры и с холодного старта, в результате чего видеозахват не работает. А вот если сначала запустить mencoder (или mplayer, не важно) с правильными параметрами, а потом avconv, то avconv начинает успешно работать. Эта фича в траке ffmpeg'а задокументирована...

2. Конкретно для Mira Video avconv как-то не совсем инициализирует карту при получении mjpeg-сжатого видео (raw в нормальном разрешении не пролазит через PCI) И в результате на выход приходит максимально пожатое видео с квадратиками. Mencoder же наоборот выдает минимальное пожатие. Как обучить avconv делать наоборот -- я так и не разобрался.

Вы конечно можете сказать что зачем avconv, если на mencoder все работает? Проблема в том, что скармливать видеопоток по ТЗ надо в RTMP, а это умеет только avconv :-(
В результате я конечно сконструировал монструозную конструкцию, когда mencoder грабит видео в named-pipe а avconv из него же немедленно видео и раздает. Оно даже работает. Но все это однако не совсем через то место через которое следовало бы...

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 10th, 2026 04:19 pm
Powered by Dreamwidth Studios