Не могу получить поток RTSP - несоответствие
Я использую Raspberry Pi3 и пытаюсь получить поток RTSP через беспроводную IP-камеру, но я получаю эту ошибку:
pi@raspberrypi:~ $ alprd -f
INFO - Running OpenALPR daemon in the foreground.
INFO - Using: /etc/openalpr/alprd.conf for daemon configuration
Missing config value for company_id
Missing config value for pattern
INFO - Using: /home/pi/Database/pictures for storing valid plate images
INFO - country: br -- config file: /etc/openalpr/openalpr.conf
INFO - pattern:
INFO - Stream 1: rtsp://192.168.1.230:554/onvif1
INFO - Starting camera 1
INFO - Video stream connecting...
[rtsp @ 0x71700960] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
INFO - Video stream connecting...
[rtsp @ 0x71700840] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
INFO - Video stream connecting...
[rtsp @ 0x71700960] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
INFO - Video stream connecting...
[rtsp @ 0x71700840] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
INFO - Video stream connecting...
[rtsp @ 0x71700960] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
INFO - Video stream connecting...
[rtsp @ 0x71700840] Nonmatching transport in server reply
WARN - Stream rtsp://192.168.1.230:554/onvif1 failed to open.
Ссылка RTSP, которую я использую: rtsp://192.168.1.230:554/onvif1
или с пользователем: pwd is:
RTSP://2512398:123@192.168.1.230:554/onvif1
Так в моем alprd.conf:
; Declare each stream on a separate line
; each unique stream should be defined as stream = [url]
stream = rtsp://192.168.1.230:554/onvif1
;stream = http://192.168.1.36:8080/video
;stream = http://127.0.0.1/example_second_stream.mjpeg
;stream = webcam
Я могу подключиться с помощью VLC (на моем компьютере и RPI) без каких-либо проблем, но когда я использую его в своем файле.conf, чтобы использовать команду alprd -f для начала проверки номерных знаков, я получаю эту ошибку: /
Я действительно новичок в программировании, поэтому, пожалуйста, не вдавайтесь в подробности, потому что я, вероятно, не пойму этого, хахаха
Спасибо, парни! Люблю тебя всех <3
2 ответа
Я столкнулся с подобной проблемой, попробуйте ffplay -rtsp_transport tcp rtsp//:...
если вы получаете ту же ошибку, вам нужно изменить OpenCV ffmpeg_cap_impl.hpp
источник, потому что этот параметр жестко закодирован.
В OpenCV 3.4.1 вы можете изменить переменную env OPENCV_FFMPEG_CAPTURE_OPTIONS на "rtsp_transport;0".
Этот env var учтен в cap_ffmpeg_impl.hpp.
#if USE_AV_INTERRUPT_CALLBACK
/* interrupt callback */
interrupt_metadata.timeout_after_ms = LIBAVFORMAT_INTERRUPT_OPEN_TIMEOUT_MS;
get_monotonic_time(&interrupt_metadata.value);
ic = avformat_alloc_context();
ic->interrupt_callback.callback = _opencv_ffmpeg_interrupt_callback;
ic->interrupt_callback.opaque = &interrupt_metadata;
#endif
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0)
#ifndef NO_GETENV
char* options = getenv("OPENCV_FFMPEG_CAPTURE_OPTIONS");
if(options == NULL)
{
av_dict_set(&dict, "rtsp_transport", "tcp", 0);
}
else
{
#if LIBAVUTIL_BUILD >= (LIBAVUTIL_VERSION_MICRO >= 100 ? CALC_FFMPEG_VERSION(52, 17, 100) : CALC_FFMPEG_VERSION(52, 7, 0))
av_dict_parse_string(&dict, options, ";", "|", 0);
#else
av_dict_set(&dict, "rtsp_transport", "tcp", 0);
#endif
}
#else
av_dict_set(&dict, "rtsp_transport", "tcp", 0);
#endif
int err = avformat_open_input(&ic, _filename, NULL, &dict);
#else
int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);
#endif