PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   "Wanted" software (http://pccar.ru/forumdisplay.php?f=97)
-   -   Пожелания к CamGrabber (http://pccar.ru/showthread.php?t=5621)

SBorovkov 11.12.2008 13:52

Цитата:

Сообщение от jabbacat (Сообщение 78816)
Хочется обязательно иметь аппаратную горячую кнопку

Насколько я понимаю, то, что ты хочешь, на раз делается при помощи autohotkey. В ней создать хоткей - 5 символов, отправить WM_CopyData в CamGrabber - вызвать функцию

Код:

Send_WM_COPYDATA( ParameterToSent, TargetTC ) ; функция высылки пользовательской команды
{
    ; В качестве параметров функция принимает имя команды и целевое окно ТС
    VarSetCapacity( CopyDataStruct, 12 ) ; устанавливаем размер высылаемой структуры данных
    InsertInteger( 1, CopyDataStruct ) ; вставляем в структуру то, что требует РР для исполнения команд
    InsertInteger( StrLen( ParameterToSent ), CopyDataStruct, 4 ) ; добавляем собственно команду (+ символ конца строки)
    InsertInteger( &ParameterToSent, CopyDataStruct, 8 ) ; добавляем указатель на собственно команду
    SendMessage, 0x4A,, &CopyDataStruct,, %TargetTC% ; шлём команду , обязательно Send, а не Post (0x4A = WM_COPYDATA)
    Return, ErrorLevel ; выходим из функции и возвращаем ответ SendMessage'а
}

Пример вызова этой же функции для переключения трека в RoadRunner
Send_WM_COPYDATA("Next", "RoadRunner" ) ; шлём пользовательскую команду РР

W962 15.12.2008 09:42

Привет Wanted. Спасибо за программу лучше в инете нет. Пользуюсь 3 месяца глюков не наблюдал. Но вопрос:
У меня стоит две камеры QuickCam® Pro for Notebooks. В этих камерах куча автоматических функций типа система автофокусировки, система автоматического определения освещенности, FaceTracking. Как выяснилось в процессе эксплуатации, все автоматические настройки не нужны. Более того, при съемки в движении из за них смазывается изображение, особенно ночью. В настройках видеокамеры снимаю все автоматические подстройки. При перезагрузки все возвращается. Все настройки становятся как было по умолчанию

--------------
Привет. Пока побежден только FaceTracking!

SBorovkov 13.01.2009 15:40

По поводу записи на флешку во избежании потери данных при аварии (ударе) и прочего:
Есть предложение сделать модуль, который умеет в реалтайме читать из файла, в который пишется поток видео и переписывать поток видео с жесткого диска на флешку. Смысл в том, что на если на флешку писать файл обычным образом, таким же как ты пишешь сейчас, то очень часто переписывается ФАТ (MFT), плюс обновляется размер файла. Это очень быстро съест количество перезаписей на MLС флешке (их всего порядка 10000, а пишется блок размером в 64К даже для изменения одного байта) и флешка полетит в помойку. Я же предлагаю создавать несколько большых файлов, заведомо больших, чем будет записан видео файл, а затем менять только их содержимое и название. Надо поэксперементировать, но почти уверен, что так получится сделать.

У меня как чуть время освободится, попробую это дело реализовать дома, там есть спорные вопросы по поводу дописывания видео файла. Думаю, что с mpg все должно получиться, а с avi могут позникнуть сложности.

SBorovkov 15.01.2009 02:20

Попробовал только что с последовательной дозаписью mpg файла. Сделал так: camgrabber пишет mpg файл, я слежу за этим файлом и раз в секунду все, что в него добавилось добавляю к своему файлу. То есть если начало изменится, то я об этом не узнаю и в своем файле начало не изменю. Я слежу за размером файла и дописываю к себе только то, что добавил camgrabber.
Итог - mpg прекрасно играется!
Продолжил изделательства - в конец такого mpg файла дописал какой-то exe файл большого размера (порядка 100 мег) в качестве мусора. В результате плееры считают, что файл содержит не 6 минут видео, а 7 с лишним, но когда доходят до конца реальных видео данных и приступают к проигрыванию мусора, просто прекращают воспроизведение.

То есть идея про дозаписывание mpg на флешку имеет очень неплохие шансы на существование.

С avi сложнее - у них в начале файла содержится заголовок размером в 64к, без которого файл просто не играется, этот заголовок надо формировать, при создании файла он забит нулями...

Wanted 15.01.2009 03:12

Цитата:

Сообщение от SBorovkov (Сообщение 84018)
Попробовал только что с последовательной дозаписью mpg файла. Сделал так: camgrabber пишет mpg файл, я слежу за этим файлом и раз в секунду все, что в него добавилось добавляю к своему файлу. То есть если начало изменится, то я об этом не узнаю и в своем файле начало не изменю. Я слежу за размером файла и дописываю к себе только то, что добавил camgrabber.
Итог - mpg прекрасно играется!
Продолжил изделательства - в конец такого mpg файла дописал какой-то exe файл большого размера (порядка 100 мег) в качестве мусора. В результате плееры считают, что файл содержит не 6 минут видео, а 7 с лишним, но когда доходят до конца реальных видео данных и приступают к проигрыванию мусора, просто прекращают воспроизведение.

То есть идея про дозаписывание mpg на флешку имеет очень неплохие шансы на существование.

С avi сложнее - у них в начале файла содержится заголовок размером в 64к, без которого файл просто не играется, этот заголовок надо формировать, при создании файла он забит нулями...

Здесь ты полностью прав за исключением размера заголовка, его размер ожет варьроваться от кол-ва внутренних потоков и контейнеров и даже от выбора кодека. Блок RIFF + блок movi + блок indx. Вот и весь avi.
Эту проблему можно решить проще.
При запуске программы сохраняем кусок видео с каждого устройства. Дергаем оттуда заголовок (он от вреени не меняется и всегда постоянен).
Пишем его себе в начало файла этого большого. Потом по твоему методу мониторим файл (хотя не самый лучший метод, через банальную проверку потока проще) но это уже мне проще в коде. И все, в случае если комп сдох - есть заголовок + блок movi, а индексы перестроить даже BSPlayer ожет, не говоря уже о VirtualDUB.

В целом мысль твоя здравая, думаю замутим!!!!

Alex_E 15.01.2009 19:16

Вот такие пожелания (3.0demo rc7):
1. При нажатии на "сохранить" - выводить список с последними записями (возможно даже с превьюшками первых кадров), чтобы поставить галки у необходимых фрагментов.
2. "Face Tracking" блокируется только начиная с записи второго куска и далее (после переинициализации камеры). Если подробнее, запускаю программу - следит за лицом. Посте того как на камере моргнет индикатор и далее - картинка замирает, как и положено, выключив зум.
3. Для облегчения подбора кодека в настройках сделать кнопку "Тестовая запись", которая сразу пишет определенный временной кусок с выбранным кодеком, присвоив ему имя этого кодека. Тогда в результате получим набор фрагментов, по которым можно будет оценить выбранную настройку. Все-таки, подбор кодека, на мой взгляд - это самая трудная часть настроек, с которой всем пришлось столкнуться. Может другой какой вариант бенчмарка для облегчения перебора кодеков, хотя, предложенный выше, мне кажется вполне наглядным...

aptm 12.02.2009 04:07

Имхо, но мне кажется, что CG все же долженбыть из серии "поставил и забыл", впрочем сейчас так почти и использую, но пока в полглаза еще контролирую, больше из за штекера питания камеры, иногда от наших колдобин контакт отходит, лампа на камере горит, а картинка синяя. - Вот тут бы не помешал бы контроль видеопотока. ;)

Что пока не хватает:
Запись звука - причем, скорее только по "кнопке", а не постоянно.
Данные с GPS, координаты, скорость - хорошо, но не так уж и обязательно. Скорость и по картинке при необходимости вычисляется.
Коректная работа с Logitech - самого интересовало, но прихожу к выводу, что не так уж и важно, вриант с нормальной камерами все же правильнее.

А вариант с "Потоком" и иже с ними, может и хорошо, только оборудование надо немножко из другой "весовой" категории.
Хотя если Паша сделает поддержку плагинов... :pleasantry:

SBorovkov 12.02.2009 22:00

Цитата:

Сообщение от jabbacat (Сообщение 87283)
Про горячую кнопку - очень надо, чтоб такой функционал был в самой программе. Не все пользователи - программисты, чтоб самому код писать.

Проверить не могу, но должно работь:
Autohotkey код.
При нажатии кнопки s записывает видео из темпа.
Код:

#Singleinstance force

s::Send_WM_COPYDATA("SAVE","CamGrabber")
return


Send_WM_COPYDATA( ParameterToSent, TargetTC ) ; функция высылки  пользовательской команды em_xyz
{
    ; В качестве параметров функция принимает имя команды em_xyz и целевое окно ТС
    VarSetCapacity( CopyDataStruct, 12 ) ; устанавливаем размер высылаемой структуры данных
;    InsertInteger( Asc( "E" ) + 256 * Asc( "M" ), CopyDataStruct ) ; вставляем в структуру то, что требует  для исполнения команд
    InsertInteger( 1, CopyDataStruct ) ; вставляем в структуру то, что требует ТС для исполнения команд
    InsertInteger( StrLen( ParameterToSent ), CopyDataStruct, 4 ) ; добавляем собственно команду (+ символ конца строки)
    InsertInteger( &ParameterToSent, CopyDataStruct, 8 ) ; добавляем указатель на собственно команду
    SendMessage, 0x4A,, &CopyDataStruct,, %TargetTC% ; шлём команду, обязательно Send, а не Post (0x4A = WM_COPYDATA)
    Return, ErrorLevel ; выходим из функции и возвращаем ответ SendMessage'а
}
;-----------------------------------------------------------------------------
InsertInteger( pInteger, ByRef pDest, pOffset = 0, pSize = 4 ) ; функция заполнения структуры данными
{
    Loop, 4 ; копируем каждый байт целого числа в структуру как сырые двоичные данные
    {
        DllCall("RtlFillMemory" ; заполняем структуру нашими данными
        , "UInt" , &pDest + pOffset + A_Index-1 ; указатель на адрес, с которого начинается заполнение
        , "UInt" , 1 ; размер заполняемой структуры в байтах
        , "UChar", pInteger >> 8*( A_Index-1 ) & 0xFF) ; содержимое заполняемого байта
    }
}

Качаешь autohotkey, в текстовом редакторе создаешь файл (лучше с расширением ahk) и кидаешь туда все вышенаписанное. Записываешь. Даблкликаешь, убеждаешься, что все работает, дальше прилагающейся утилитой компилишь этот файл в exe. Запускаешь exe, удивляешься, что Autohotkey не жрет процессор и занимает мало памяти. Ставишь получившийся файл в автозагрузку...

Я так понимаю, что Autohotkey и так работает на очень большом количестве авто-компов, является просто мега-настраиваемой программой. У многих именно эта прога позволяет управлять компом с подрулевого джойстика.

SBorovkov 16.02.2009 18:04

2 Wanted:

Предлагаю в комплект установки КамГраббера включить вышеуказанный AutoHotKey скрипт (ну мож чуток причесанный) для управления камграббером.

Wanted 09.03.2009 23:51

По поводу двоения субтитров внизу:

Собака порылась в первом блоке субтитров:

1
00:00:00,001 --> 00:05:11,480
Wanted CamGrabber 3.1demo 20:25:53 09.03.2009
56,1km/h

2
00:05:11,481 --> 00:00:00,480
Wanted CamGrabber 3.1demo 20:25:54 09.03.2009
56,4km/h
...........


Часовой пояс GMT +4, время: 02:00.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot