fix: realtime multi cam
This commit is contained in:
parent
593611cdb7
commit
bf7b68edb1
1 changed files with 34 additions and 18 deletions
|
|
@ -266,7 +266,7 @@ def main_multi_stream():
|
||||||
conn = manager.connect_stream(
|
conn = manager.connect_stream(
|
||||||
rtsp_url=rtsp_url,
|
rtsp_url=rtsp_url,
|
||||||
stream_id=stream_id,
|
stream_id=stream_id,
|
||||||
buffer_size=30
|
buffer_size=5
|
||||||
)
|
)
|
||||||
connections[stream_id] = conn
|
connections[stream_id] = conn
|
||||||
print(f"✓ Connected: {stream_id}")
|
print(f"✓ Connected: {stream_id}")
|
||||||
|
|
@ -289,26 +289,42 @@ def main_multi_stream():
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Simple approach: iterate over first connection's results
|
# Merge all result queues from all connections
|
||||||
# In production, you'd properly merge all result streams
|
import queue as queue_module
|
||||||
for conn in connections.values():
|
|
||||||
for result in conn.tracking_results():
|
|
||||||
total_results += 1
|
|
||||||
stream_id = result.stream_id
|
|
||||||
|
|
||||||
if stream_id in stream_stats:
|
running = True
|
||||||
stream_stats[stream_id]['count'] += 1
|
while running:
|
||||||
|
# Poll all connection queues (non-blocking)
|
||||||
|
got_result = False
|
||||||
|
for conn in connections.values():
|
||||||
|
try:
|
||||||
|
# Non-blocking get from each connection's queue
|
||||||
|
result = conn.result_queue.get_nowait()
|
||||||
|
got_result = True
|
||||||
|
|
||||||
# Print stats every 100 results
|
total_results += 1
|
||||||
if total_results % 100 == 0:
|
stream_id = result.stream_id
|
||||||
elapsed = time.time() - start_time
|
|
||||||
total_fps = total_results / elapsed if elapsed > 0 else 0
|
|
||||||
|
|
||||||
print(f"\nTotal: {total_results} | {elapsed:.1f}s | {total_fps:.1f} FPS")
|
if stream_id in stream_stats:
|
||||||
for sid, stats in stream_stats.items():
|
stream_stats[stream_id]['count'] += 1
|
||||||
s_elapsed = time.time() - stats['start']
|
|
||||||
s_fps = stats['count'] / s_elapsed if s_elapsed > 0 else 0
|
# Print stats every 100 results
|
||||||
print(f" {sid}: {stats['count']} ({s_fps:.1f} FPS)")
|
if total_results % 100 == 0:
|
||||||
|
elapsed = time.time() - start_time
|
||||||
|
total_fps = total_results / elapsed if elapsed > 0 else 0
|
||||||
|
|
||||||
|
print(f"\nTotal: {total_results} | {elapsed:.1f}s | {total_fps:.1f} FPS")
|
||||||
|
for sid, stats in stream_stats.items():
|
||||||
|
s_elapsed = time.time() - stats['start']
|
||||||
|
s_fps = stats['count'] / s_elapsed if s_elapsed > 0 else 0
|
||||||
|
print(f" {sid}: {stats['count']} ({s_fps:.1f} FPS)")
|
||||||
|
|
||||||
|
except queue_module.Empty:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Small sleep if no results to avoid busy loop
|
||||||
|
if not got_result:
|
||||||
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue