Я провожу эксперимент, чтобы имитировать выгрузку вычислительных задач с камеры дрона и использовать пограничный узел для предварительная обработка и запрос облачных услуг компьютерного зрения. Поэтому необходимо, чтобы я использовал RTSP для создания потока, и крайне желательно, чтобы видео было закодировано в H.264.
Сценарий Python на Raspberry Pi Zero W:< /strong>
Код: Выделить всё
import subprocess
import time
# RTSP Streaming Parameters
streamPort = 554 # Default RTSP Port
def start_rtsp_stream(): # Starts RTSP Stream using libcamera
try:
cmd = [ # Set stream parameters to
'libcamera-vid',
'-t', '0', '-v', # 0ms timeout, Verbose output for debugging
'--inline',
'--listen',
'--o', f'rtsp://0.0.0.0:{streamPort}/stream' # Enable access from any IP
]
# Start subprocess
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(f"RSTP stream started on rtsp://XXX.XXX.XXX.XXX:{streamPort}/stream")
print("Use a player like VLC to view the stream")
# Loop until interrupted
while True:
# stdoutput = process.stdout.readline() # read standard output
output = process.stderr.readline() # Read from stderr
# if stdoutput: # This was too volumous and I commented out to avoid the additional output
#print(stdoutput)
if output:
print(output.decode()) # If error, output.
time.sleep(1)
except KeyboardInterrupt: # Quit on Keyboard Interrupt
print("Stopping stream.")
process.terminate()
process.wait()
if __name__ == '__main__':
start_rtsp_stream()
Когда я запускаю сценарий на Raspberry Pi, я получаю следующие результаты
Код: Выделить всё
camerapi@raspberrypi:~/Scripts $ python3 /home/camerapi/Scripts/StreamCamera.py
RSTP stream started on rtsp://XXX.XXX.XXX.XXX:554/stream
Use a player like VLC to view the stream
[16:07:06.541632480] [21589] INFO Camera camera_manager.cpp:325 libcamera v0.3.2+27-7330f29b
A bunch of camera details in here...
[16:07:06.979875052] [21589] INFO Camera camera.cpp:1197 configuring streams: (0) 640x480-YUV420 (1) 640x480-SGBRG10_CSI2P
[16:07:06.981470025] [21594] INFO RPI vc4.cpp:622 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 640x480-SGBRG10_1X10 - Selected unicam format: 640x480-pGAA
A bunch more camera details here...
Camera started!
Viewfinder frame 0
#0 (0.00 fps) exp 33167.00 ag 6.38 dg 1.00
terminate called after throwing an instance of 'std::runtime_error'
what(): failed to open output file rtsp://0.0.0.0:554/stream
Код: Выделить всё
libcamera-vid -t 0 -o rtsp://0.0.0.0:554/stream
Код: Выделить всё
camerapi@raspberrypi:~/Scripts $ libcamera-vid -t 0 -o rtsp://0.0.0.0:554/stream
[16:12:09.513768085] [21704] INFO Camera camera_manager.cpp:325 libcamera v0.3.2+27-7330f29b
[16:12:09.885832770] [21708] WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[16:12:09.906402420] [21708] INFO RPI vc4.cpp:447 Registered camera /base/soc/i2c0mux/i2c@1/ov5647@36 to Unicam device /dev/media3 and ISP device /dev/media1
[16:12:09.907872395] [21708] INFO RPI pipeline_base.cpp:1126 Using configuration file '/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml'
Preview window unavailable
Mode selection for 640:480:12:P
SGBRG10_CSI2P,640x480/0 - Score: 1000
SGBRG10_CSI2P,1296x972/0 - Score: 1287
SGBRG10_CSI2P,1920x1080/0 - Score: 1636.67
SGBRG10_CSI2P,2592x1944/0 - Score: 1854
Stream configuration adjusted
[16:12:09.927770058] [21704] INFO Camera camera.cpp:1197 configuring streams: (0) 640x480-YUV420 (1) 640x480-SGBRG10_CSI2P
[16:12:09.930069019] [21708] INFO RPI vc4.cpp:622 Sensor: /base/soc/i2c0mux/i2c@1/ov5647@36 - Selected sensor format: 640x480-SGBRG10_1X10 - Selected unicam format: 640x480-pGAA
#0 (0.00 fps) exp 33167.00 ag 6.25 dg 1.00
terminate called after throwing an instance of 'std::runtime_error'
what(): failed to open output file rtsp://0.0.0.0:554/stream
Aborted
Кто-нибудь, обладающий достаточным опытом, знает, что попробовать дальше?
Подробнее здесь: https://stackoverflow.com/questions/792 ... era-module