How to play video side by side using streamlit and opencv-python

Created a project for playing video side by side using streamlit and opencv-python but on the loop it generates video frames continuously but I want in a 1x1 format

import cv2
import streamlit as st

st.set_page_config(
    page_title="Sample Page"
)

st.title("4-Video Grid")

cap = cv2.VideoCapture("videos/video1.mp4")

col1, col2 = st.columns([1, 1])

while True:
    ret, frame1 = cap.read()
    ret, frame2 = cap.read()
    if not ret:
        break
    
    col1.image(frame1, channels="BGR")
    col2.image(frame2, channels="BGR")


    key = cv2.waitKey(1)
    if key == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()

The above provided code is just a sample but it generates frames continuously

I want to play 2 videos side by side using streamlit and opencv-python for a Computer Vision Project

1 Like

If you plan to deploy the streamlit app at some point, that won’t work with opencv anyway, opencv is unfortunately a dead end.

1 Like

we can make .exe files using streamlit right?

1 Like

I found a solution for this it’s simple and not the proper way but i found it somehow

import streamlit as st
import cv2

st.set_page_config(
    page_title="Workout file"
)

st.title("Multiple Cameras")

cam1, cam2 = st.columns((1, 1))
video_1 = cam1.empty()
video_2 = cam2.empty()

cap1 = cv2.VideoCapture("videos/cars.mp4")
cap2 = cv2.VideoCapture("videos/motorbikes-1.mp4")

while cap1.isOpened() or cap2.isOpened():
    ret1, frame1 = cap1.read()
    ret2, frame2 = cap2.read()

    frame1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2RGB)
    frame2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2RGB)
    video_1.image(frame1, channels="RGB")
    video_2.image(frame2, channels="RGB")


cap1.release()
cap2.release()
cv2.destroyAllWindows()

and i am going to close this topic

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.