Play a video in reverse mode using Python OpenCv

OpenCV (Open Source Computer Vision) is a powerful library for image and video processing in Python. One interesting application is playing videos in reverse mode by manipulating the frame order.

Application Areas of OpenCV

  • Facial recognition system
  • Motion tracking
  • Artificial neural network
  • Deep neural network
  • Video streaming

Installation

For Windows ?

pip install opencv-python

For Linux ?

sudo apt-get install python-opencv

Steps to Play Video in Reverse

  1. Import OpenCV library (cv2)
  2. Load the video file as input
  3. Extract all frames from the video and store them in a list
  4. Reverse the order of frames using the reverse() method
  5. Display the reversed frames to create reverse playback effect

Complete Example

Here's a working implementation that plays a video in reverse mode ?

import cv2

# Load the video file
cap = cv2.VideoCapture('sample_video.mp4')

# Check if video file opened successfully
if not cap.isOpened():
    print("Error: Could not open video file")
    exit()

# List to store all frames
frame_list = []

print("Reading frames from video...")

# Read all frames and store in list
while True:
    ret, frame = cap.read()
    if not ret:
        break
    frame_list.append(frame)

print(f"Total frames extracted: {len(frame_list)}")

# Close the video file
cap.release()

# Reverse the frame list
frame_list.reverse()

print("Playing video in reverse mode...")

# Display frames in reverse order
for frame in frame_list:
    cv2.imshow("Reverse Video", frame)
    
    # Wait for 30ms between frames (adjust for speed)
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break

# Clean up
cv2.destroyAllWindows()

Key Points

  • Memory Usage: This method loads all frames into memory, which may be problematic for large videos
  • Performance: Adjust the waitKey() delay to control playback speed
  • File Format: Ensure your video file is in a supported format (MP4, AVI, etc.)
  • Exit: Press 'q' to quit the reverse playback

Alternative Approach for Large Videos

For memory-efficient processing of large videos, you can use frame indexing ?

import cv2

cap = cv2.VideoCapture('sample_video.mp4')

# Get total number of frames
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

print(f"Playing {total_frames} frames in reverse...")

# Play frames in reverse order using frame positioning
for i in range(total_frames - 1, -1, -1):
    cap.set(cv2.CAP_PROP_POS_FRAMES, i)
    ret, frame = cap.read()
    
    if not ret:
        break
        
    cv2.imshow("Reverse Video", frame)
    
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Output

When you run the code, it will display the video in reverse mode. The frames will play backwards, creating a reverse playback effect. Press 'q' to exit the playback.

Reverse Mode Video Playback

Conclusion

OpenCV provides two main approaches for reverse video playback: loading all frames into memory or using frame positioning. Choose the frame positioning method for large videos to avoid memory issues.

Updated on: 2026-03-25T04:55:20+05:30

801 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements