not multiple enc
parent
72f70f10ff
commit
2428765a7c
|
@ -5,37 +5,83 @@ import depthai as dai
|
|||
import contextlib
|
||||
|
||||
# Start defining a pipeline
|
||||
print("Define pipeline")
|
||||
pipeline = dai.Pipeline()
|
||||
|
||||
# Define a source - color camera
|
||||
print("Define a source")
|
||||
cam_rgb = pipeline.createColorCamera()
|
||||
cam_rgb.setPreviewSize(600, 600)
|
||||
cam_rgb.setBoardSocket(dai.CameraBoardSocket.RGB)
|
||||
cam_rgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
|
||||
#cam_rgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
|
||||
cam_rgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_4_K)
|
||||
cam_rgb.setInterleaved(False)
|
||||
video_enc = pipeline.createVideoEncoder()
|
||||
|
||||
# Properties
|
||||
print("Define properties")
|
||||
video_enc.setDefaultProfilePreset(3840, 2160, 30, dai.VideoEncoderProperties.Profile.H265_MAIN)
|
||||
|
||||
# Create output
|
||||
print("Create output")
|
||||
xout_rgb = pipeline.createXLinkOut()
|
||||
xout_rgb.setStreamName("rgb")
|
||||
xout_rgb.setStreamName("h265")
|
||||
cam_rgb.preview.link(xout_rgb.input)
|
||||
cam_rgb.video.link(video_enc.input)
|
||||
video_enc.bitstream.link(xout_rgb.input)
|
||||
|
||||
q_rgb_list = []
|
||||
print("q_rgb_list")
|
||||
|
||||
# https://docs.python.org/3/library/contextlib.html#contextlib.ExitStack
|
||||
with contextlib.ExitStack() as stack:
|
||||
for device_info in dai.Device.getAllAvailableDevices():
|
||||
print("for device_info...")
|
||||
device = stack.enter_context(dai.Device(pipeline, device_info))
|
||||
deviceIP = device_info.getMxId()
|
||||
print("Device IP: " + deviceIP)
|
||||
print("Conected to " + device_info.getMxId())
|
||||
device.startPipeline()
|
||||
# Output queue will be used to get the rgb frames from the output defined above
|
||||
q_rgb = device.getOutputQueue(name="rgb", maxSize=4, blocking=False)
|
||||
#q_rgb = device.getOutputQueue(name="h265", maxSize=4, blocking=False)
|
||||
# Output queue will be used to get the encoded data from the output defined above
|
||||
#q_rgb = device.getOutputQueue(name="h265", maxSize=30, blocking=True)
|
||||
q_rgb = device.getOutputQueue(name="h265", maxSize=30, blocking=False)
|
||||
#open('video.h265.' + deviceIP, 'wb') as videoFile
|
||||
# open('video.h265', 'wb') as videoFile
|
||||
q_rgb_list.append(q_rgb)
|
||||
#with open('video.h265', 'wb') as videoFile:
|
||||
open('video.h265', 'wb') as videoFile
|
||||
while True:
|
||||
h265Packet = q.get() # Blocking call, will wait until a new data has arrived
|
||||
h265Packet.getData().tofile(videoFile) # Appends the packet data to the opened file
|
||||
|
||||
while True:
|
||||
for i, q_rgb in enumerate(q_rgb_list):
|
||||
print("q_rgb in enumerate...")
|
||||
in_rgb = q_rgb.tryGet()
|
||||
if in_rgb is not None:
|
||||
cv2.imshow("rgb-" + str(i + 1), in_rgb.getCvFrame())
|
||||
# print("imshow...")
|
||||
# cv2.imshow("rgb-" + str(i + 1), in_rgb.getCvFrame())
|
||||
print("get packet...")
|
||||
h265Packet = q.get() # Blocking call, will wait until a new data has arrived
|
||||
print("append packet...")
|
||||
h265Packet.getData().tofile(videoFile) # Appends the packet data to the opened file
|
||||
#with open('video.h265', 'wb') as videoFile:
|
||||
# try:
|
||||
# while True:
|
||||
# h265Packet = q.get() # Blocking call, will wait until a new data has arrived
|
||||
# h265Packet.getData().tofile(videoFile) # Appends the packet data to the opened file
|
||||
|
||||
if cv2.waitKey(1) == ord('q'):
|
||||
break
|
||||
|
||||
###### XXX ENCODING XXX ######
|
||||
#with dai.Device(pipeline) as device:
|
||||
# with open('video.h265', 'wb') as videoFile:
|
||||
# print("Press Ctrl+C to stop encoding...")
|
||||
# try:
|
||||
# while True:
|
||||
# h265Packet = q.get() # Blocking call, will wait until a new data has arrived
|
||||
# h265Packet.getData().tofile(videoFile) # Appends the packet data to the opened file
|
||||
|
||||
|
|
Loading…
Reference in New Issue