Python to Play Video Player on Terminal with Source Code

  • EasyVideoPlayer script is a video player based on the terminal.
  • It can find the video in a pc, change its working directory and play the video file.

Prerequisites:

  • cv2, os, pathlib and ffpyplayer.player libraries are needed to run this script, all of which can be installed using “pip3 install ‘library name'”.

Run the Script:

  • ‘cd’ to the directory that contains the script and type “python3 EasyVideoPlayer.py”.
  • When you are done with the video, use “keyboard interrupt” (Ctrl + C) to exit the player.

Requirements:

  • opencv-python==4.4.0.42
  • pathlib==1.0.1
  • ffpyplayer==4.3.1

Source Code:

EasyVideoPlayer.py

import cv2
import os
from pathlib import Path
from ffpyplayer.player import MediaPlayer


# User input for the name of the image file.
video_name = input("Name of the video file that you want to play:    ")

# User input for the path of the image file.
video_directory_guess = input("Directory that may contain the video:    ")


# This function finds your file. If you don't know the directory just type '/'
def find_the_video(file_name, directory_name):
    files_found = []
    for path, subdirs, files in os.walk(directory_name):
        for name in files:
            if(file_name == name):
                file_path = os.path.join(path, name)
                files_found.append(file_path)

    print(files_found)
    return files_found[0]  # Return the path.


# Initialize the path of the image file.
video_directory = Path(find_the_video(video_name, video_directory_guess))

# Initialize the parent directory of the image path.
new_working_directory = video_directory.parent

# Change the working directory of the script.
os.chdir(new_working_directory)


video_path = find_the_video(video_name, video_directory_guess)


def PlayVideo(video_path):

    video = cv2.VideoCapture(video_path)
    player = MediaPlayer(video_path)

    while True:
        grabbed, frame = video.read()
        audio_frame, val = player.get_frame()
        if not grabbed:
            print("End of video")
            break
        if cv2.waitKey(28) & 0xFF == ord("q"):
            break
        cv2.imshow("Video", frame)
        if val != 'eof' and audio_frame is not None:
            img, t = audio_frame
    video.release()
    cv2.destroyAllWindows()


PlayVideo(video_path)

Leave a Comment