APXANGEL 0 Жалоба Опубликовано January 19, 2016 Всем привет, нужно создать библиотеку для приёма и обработки кадров с ip камер. Собственно проблема в приёме кадров. Всё, что находил в сети, не заработало. Библиотеку с поддержкой ffmpeg перестроил. Когда в браузере набираю ip адрес и порт камеры после ввода логина и пароля видео с камеры есть, но с задержкой в несколько секунд. P.S. Visual Studio 2015, OpenCV 3.1.0, на данный момент экспериментирую с камерой http://vstarcam.in.ua/page/obzor-ip-kamery-vstarcam-c7815wip Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 Попробуй отключить авторизацию. Заработало? Если да, то включи обратно и используй авторизацию автоматически, указывая пользователя и пароль в строке адреса. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Отключить авторизацию сейчас нет возможности, сотрудник заболел у которого есть туда доступ, но я у него и раньше спрашивал можно ли отключить, говорил не знает как) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 Ну так включай авторизацию в адрес! Типа: rtsp://username:password@192.168.X.XXX/stream1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Пробую с таким кодом: #include "opencv2/opencv.hpp" #define ESC_KEY 27 int main(int argc, char** argv) { const char* ResultWindow = "Result"; char key = -1; cv::Mat src; cv::VideoCapture capture; if (!capture.open("rtsp://admin:888888@192.168.0.200:8081/stream1")) return -1; cv::namedWindow(ResultWindow, CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED); while (key != ESC_KEY) { if (capture.read(src)) { cv::imshow(ResultWindow, src); key = cv::waitKey(1); } else break; } capture.release(); cv::destroyAllWindows(); } Программа не идёт дальше строки capture.open... Интереснее выходит, если написать http://admin:888888@192.168.0.200:8081/cgi/mjpg/mjpg.cgi?.mjpg. Тогда, после паузы секунд в 5, в консоли на долю секунды выводится "warning: Error opening file (/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:578)" и программа закрывается. Без понятия что это вообще за директория даже, такой нету даже в штатной сборке opencv. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 У меня есть, может ты как-то неправильно OpenCV собрал? Потому что и на гитхабе есть: https://github.com/Itseez/opencv/blob/master/modules/videoio/src/cap_ffmpeg_impl.hpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Ну на гитхабе лежат исходники, а не уже собранный, в исходниках у меня такой файл тоже есть, но тут именно /build/opencv/... В штатном дистрибутиве opencv в папке build есть папки: bin, etc, include, java, python, x64. В моей сборке всё тоже самое, но без java и python. Тут даже нету папки opencv... Тот файл, который указан в ошибке у меня лежит по адресу \sources\modules\videoio\src\cap_ffmpeg_impl.hpp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 Это нормально. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Ну если это нормально, тогда собственно не понятно откуда взялся путь /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp , который указан в ошибке, и что, собственно, делать с ошибкой) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 1. Путь этот с того компа, на котором собирался твой opencv. 2. Попробуй запустить с другими опциями, например, с h264 кодеком, а не mjpeg. 3. Попробуй захватить видео голым ffmpeg, без OpenCV. Или vlc. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 1. opencv собирался на этом компьютере 2. Попробовал вот так http://admin:888888@192.168.0.200:8081/h264 ошибка та же 3. Попробовал в vlc открыть: http://admin:888888@192.168.0.200:8081/cgi/mjpg/mjpg.cgi?.mjpg http://admin:888888@192.168.0.200:8081/h264 rtsp://admin:888888@192.168.0.200:8081/stream1 http://admin:888888@192.168.0.200:8081/h264 Он поругался на всё, не ругается только если в первой ссылке порт написать не 8081 а 81, там просто молчит и ничего не выводит Попробовал сейчас видео с веб камеры вывести, выводит серый экран, наверное всё-таки собралось не правильно Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Пересобрал, проверил что с веб камерой работает, в остальном всё тоже самое, только ошибка появляется уже не на долю секунды. Однако это не меняет того факта, что в vlc тоже не воспроизводится. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 Надо посмотреть другие способы авторизации. Мне кажется, что причина именно в этом. Может, у тебя документация на камеру есть? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано January 19, 2016 Собственно, по ссылке, что я скинул в первом сообщении всё что есть. Только, мне то нужно потом библиотеку сделать будет для разных камер, есть какой-нибудь универсальный способ приёма изображения с ip-камер? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано January 19, 2016 Не, у всех свои тараканы. Даже заявляемая поддержка ONVIF (rtsp по-сути для видео) мало что значит. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
iskees 32 Жалоба Опубликовано January 19, 2016 У большинства камер есть поддержка mjpeg, с ним как то проблем меньше да и проц без аппаратного декодирование не так грузит как h264. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано February 10, 2016 Случайно ссылку в интернете нашёл всё-таки http://192.168.0.200:81/videostream.cgi?user=admin&pwd=888888, в VLC открывает, релиз OpenCV "из коробки" выдал ошибку, наверное пересобирать надо, но этим позже возможно займусь. Сейчас другая проблема встала. В общем библиотеку запаковать в dll нужно. Если её не запаковывать, а использовать как обычные .h и .cpp файлы, то проблем нет, но после пакования в dll на самой последней строчке проекта, в котором её использую вылазит ошибка: Run-Time Check Failure #2 - Stack around the variable 'frameSource' was corrupted. Гугление результатов не дало. Проект по ссылке, может кто подскажет что с этим делать? http://depositfiles.com/files/y85j9b7lc Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 10, 2016 Можно проверить с помощью ffmpeg (под Windows): ffplay.exe http://192.168.0.200:81/videostream.cgi?user=admin&pwd=888888 Если будет проигрываться, то и OpenCV должна справиться. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано February 10, 2016 Я так понял эту строку надо в командной строке windows вводить? Если да, то у меня пишел, что ffplay.exe не является программой и т.д. Но дело не в этом, в том проекте, на который я дал ссылку, тестировал на получении кадров с видеофайла. Очень странная ситуация происходит, вроде как все кадры получаются, но при завершении программы вылазит указанная ошибка. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 10, 2016 У тебя ffplay.exe есть где-нибудь? Если нет, то скачай. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
APXANGEL 0 Жалоба Опубликовано February 10, 2016 Да говорю ж проблема не в этом, можно из любого видеофайла на компьютере кадры тащить. Надо просто найти в проекте ошибку, из-за которой при завершении тестовой программы вываливается ошибка. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 10, 2016 Ошибка в коде у тебя, где-то память портится. Надо проверять всё вручную или взять всякие тулзы, под Линуксом это valgrind, например. Тут чисто рутинная программисткая работа. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах