UDP 视频流
Video stream over UDP
我目前正在尝试通过 UDP 将视频从 RPi (运行 Raspbian) 流式传输到我的 MBP Retina (Yosemite)。
我有一个可以通过 TCP 进行流式传输的工作脚本,但我知道 UDP 是视频流的更好选择,但我不太确定该怎么做。这是我目前所拥有的:
import socket, picamera, time
UDPsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
file = UDPsock.makefile('wb')
class videostream():
def __init__(self):
print "Camera Class Initialised"
def stream(self):
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
time.sleep(2)
camera.start_recording(file, format='h264')
camera.wait_recording(60)
camera.stop_recording()
camera = videostream()
stream = camera.stream()
address = ("10.0.1.29", 8000)
UDPsock.sendto(stream, address)
它给我这个错误:socket.error: [Errno 89] Destination address required
行:camera.stop_recording()
。
我对 Python 中的网络还很陌生,所以请原谅任何愚蠢的错误。
我不能立即告诉你修复方法,但我可以发现一大堆错误:
- 赋值给变量"file"。 ("file" 是一个 Python 关键字;BAD MOVE)
- 在我看来 camera.stream() return 没什么...因此 "stream" 将是 "None"
- 我认为 sendto() 不接受文件对象;我只见过它与字符串一起使用,我认为文档支持这一点。
祝你好运!
我目前正在尝试通过 UDP 将视频从 RPi (运行 Raspbian) 流式传输到我的 MBP Retina (Yosemite)。
我有一个可以通过 TCP 进行流式传输的工作脚本,但我知道 UDP 是视频流的更好选择,但我不太确定该怎么做。这是我目前所拥有的:
import socket, picamera, time
UDPsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
file = UDPsock.makefile('wb')
class videostream():
def __init__(self):
print "Camera Class Initialised"
def stream(self):
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
time.sleep(2)
camera.start_recording(file, format='h264')
camera.wait_recording(60)
camera.stop_recording()
camera = videostream()
stream = camera.stream()
address = ("10.0.1.29", 8000)
UDPsock.sendto(stream, address)
它给我这个错误:socket.error: [Errno 89] Destination address required
行:camera.stop_recording()
。
我对 Python 中的网络还很陌生,所以请原谅任何愚蠢的错误。
我不能立即告诉你修复方法,但我可以发现一大堆错误:
- 赋值给变量"file"。 ("file" 是一个 Python 关键字;BAD MOVE)
- 在我看来 camera.stream() return 没什么...因此 "stream" 将是 "None"
- 我认为 sendto() 不接受文件对象;我只见过它与字符串一起使用,我认为文档支持这一点。
祝你好运!