Всем привет!
Пытаюсь проиграть видео с IP-камеры, которая вещает по rtsp в h264-кодировке и при любом движении в кадре получается очень много артефактов, что совсем не разобрать содержимое видео. Пробовались версии:
ffmpeg 3.0 (дефолтная сборка в убунте), 3.2.3 (самосборная);
opencv 3.2.0 (самосбор с гитхаба)
QT 5.8.0/g++ 6.0 для компиляции исходников вывода видео.
Примечательно, что ffmpeg -rtsp_transport tcp
и vlc адекватно отрабатывают, а VideoCapture - так, как будто бы по udp идет вещание (что и подтвердил iptraf). Проверил исходники opencv 3.2.0 - там флаг rtsp_transport выставляется, но где-то дальше по коду игнорируется.
Тащить за собой libvlc чисто из-за того, что в ней удобная обертка над libavformat для работы с rtsp уж совсем не хочется, при том, что сам ffmpeg не использует libvlc и все равно правильно работает.
К сожалению, в инете патчей к opencv не нашел и все советы сходились на использовании libvlc.
Ах да, открывается устройство вот так:
cv::VideoCapture* cap = new cv::VideoCapture( "rtsp://<IP:port>/PSIA/Streaming/channels/2?videoCodecType=H.264" )
Может, кто-то уже сталкивался с этим багом и в курсе, как его можно побороть?