Quero processar um fluxo rtsp criado a partir de uma câmera framboesa quadro a quadro com python ou C ++.
.py
import cv2
rtsp_url = "rtsp://192.168.55.151:8554/stream.sdp"
video = cv2.VideoCapture(rtsp_url)
while(1):
ret, frame = video.read()
cv2.imshow('VIDEO', frame)
cv2.waitKey(1)
O stream é criado a partir da máquina de framboesa usando vlc: raspivid -o - -t 0 -hf -w 640 -h 480 -fps 30 | cvlc stream:///dev/stdin --sout "#rtp{sdp=rtsp://192.168.55.151:8554/stream.sdp}" :demux=h264
O stream foi aberto com sucesso a partir do reprodutor vlc com: rtsp: //192.168.55.151 : 8554 / stream.sdp
No entanto, a partir do código python, obtenho: method SETUP failed: 461 Client error
(um erro ffmpeg)
Se eu executar o ffmpeg da linha de comando: ffmpeg -rtsp_transport tcp -i rtsp://192.168.55.151:8554/stream.sdp
recebo exatamente o mesmo erro: o método SETUP falhou: 461 Erro do cliente, bem como Protocol not supported
Se eu executar o ffmpeg da linha de comando: ffmpeg -rtsp_transport udp -i rtsp://192.168.55.151:8554/stream.sdp
o stream decodifica com sucesso.
Este protocolo de transporte é um bug ou estou fazendo algo errado? Posso especificar o protocolo de transporte no código OpenCV?
Para evitar falhas na rede / desconexão do fluxo de vídeo / etc, o OpenCV força o protocolo de transporte
BTW, as perguntas de uso devem ir para o fórum de perguntas e respostas do OpenCV de usuários: http://answers.opencv.org
Você pode querer instalar o driver UV4L para a câmera raspberry, ele permitirá que você tenha um url com o stream de vídeo que é compatível com o opencv e funciona muito bem. eu já testei.
Você pode querer instalar o driver UV4L para a câmera raspberry, ele permitirá que você tenha um url com o stream de vídeo que é compatível com o opencv e funciona muito bem. eu já testei.
você tem um tutorial para isso?
Comentários muito úteis
você tem um tutorial para isso?