파이썬을 사용하여 라즈베리 파이에서 내 컴퓨터로 비디오 피드를 스트리밍하려고합니다. 따라서 소켓을 서버에 연결해야합니다. 이 코드 실행 내 컴퓨터에서OSError : [WinError 10049]이 오류를 어떻게 해결할 수 있습니까?
(RPI에서 192.168.0.6:8081에서 직접 스트리밍 비디오 이것들을 실행하기 전에) :
Traceback (most recent call last):
File "C:/Users/tiger/Desktop/take_the_stream_from_pi.py", line 43, in <module>
VideoStreamingTest()
File "C:/Users/tiger/Desktop/take_the_stream_from_pi.py", line 11, in __init__
self.server_socket.bind(('192.168.0.6', 8081))
OSError: [WinError 10049] The requested address is not valid in its context
: 컴파일하는 동안
import numpy as np
import cv2
import socket
class VideoStreamingTest(object):
def __init__(self):
self.server_socket = socket.socket()
self.server_socket.bind(('192.168.0.6', 8081))
self.server_socket.listen(0)
self.connection, self.client_address = self.server_socket.accept()
self.connection = self.connection.makefile('rb')
self.streaming()
def streaming(self):
try:
print ("Connection from: ", self.client_address)
print ("Streaming...")
print ("Press 'q' to exit")
stream_bytes = ' '
while True:
stream_bytes += self.connection.read(1024)
first = stream_bytes.find('\xff\xd8')
last = stream_bytes.find('\xff\xd9')
if first != -1 and last != -1:
jpg = stream_bytes[first:last + 2]
stream_bytes = stream_bytes[last + 2:]
#image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.CV_LOAD_IMAGE_GRAYSCALE)
image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.CV_LOAD_IMAGE_UNCHANGED)
cv2.imshow('image', image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
self.connection.close()
self.server_socket.close()
if __name__ == '__main__':
VideoStreamingTest()
그것을이 오류가 발생합니다 편집 : 이것은 또한주고있다
Traceback (most recent call last):
File "C:/Users/tiger/Desktop/take_the_stream_from_pi.py", line 47, in
<module>
VideoStreamingTest()
File "C:/Users/tiger/Desktop/take_the_stream_from_pi.py", line 17, in
__init__
self.connection = self.socket.create_connection(('192.168.0.6', 8081))
AttributeError: 'socket' object has no attribute 'create_connection'
그래서 다시 보았습니다. connect_ex와 create_connection를 배치하고 여전히하는 오류를주고있다 .. :(
class VideoStreamingTest(object):
def __init__(self):
#self.server_socket = socket.socket()
#self.server_socket.bind(('192.168.0.6', 8081))
#self.server_socket.listen(0)
#self.connection, self.client_address = self.server_socket.accept()
#self.connection = self.connection.makefile('rb')
#self.streaming()
self.socket = socket.socket()
self.connection = self.socket.create_connection(('192.168.0.6', 8081))
#self.socket.connect(('192.168.0.6', 8081))
self.streaming()
def streaming(self):
try:
#print ("Connection from: ", self.client_address)
print ("Streaming...")
print ("Press 'q' to exit")
stream_bytes = ' '
while True:
stream_bytes += self.connection.read(1024)
first = stream_bytes.find('\xff\xd8')
last = stream_bytes.find('\xff\xd9')
if first != -1 and last != -1:
jpg = stream_bytes[first:last + 2]
stream_bytes = stream_bytes[last + 2:]
#image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.CV_LOAD_IMAGE_GRAYSCALE)
image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.CV_LOAD_IMAGE_UNCHANGED)
cv2.imshow('image', image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
self.connection.close()
self.socket.close()
if __name__ == '__main__':
VideoStreamingTest()
'192.168.0.6'가 올바른 원격 IP 주소입니다? 'socket.bind()'에는 로컬 호스트에 할당 된 주소가 필요합니다. – birryree
나중에 해당 라즈베리 파이의 IP 주소 –