I have this code form my friend and I didn’t change anything in the code. part of the code is for mp3 player and it is working but the mp4 player is not working.
here is the code for the video player and yes i installed all packages and no errors. When uploading a video it is not shown in the screen and the play button is not working.
import pygame
from tkinter import filedialog
import time
from mutagen.mp3 import MP3
from tkinter import *
import tkinter.ttk as ttk
############## imports below so we can run the video player from here ##############
from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, QStyle, QFileDialog,
QSlider, QLabel, QSizePolicy, QVBoxLayout, QHBoxLayout)
from PyQt5.QtGui import QIcon, QPalette
from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
import sys
import os
####################################################################################
class window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Rami Video Player 1.0")
self.setGeometry(400, 200, 1000, 600)
self.setWindowIcon(QIcon('imgs/python.jpg'))
p = self.palette()
p.setColor(QPalette.Window, Qt.black)
self.setPalette(p)
self.init_ui()
self.show()
def init_ui(self):
self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
videowidget = QVideoWidget()
openBtn = QPushButton('Open Video')
openBtn.clicked.connect(self.open_file)
self.playBtn = QPushButton()
self.playBtn.setEnabled(False)
self.playBtn.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
self.playBtn.clicked.connect(self.play_video)
self.slider = QSlider(Qt.Horizontal)
self.slider.setRange(0, 0)
self.slider.sliderMoved.connect(self.set_position)
self.label = QLabel()
self.label.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
hboxlayout = QHBoxLayout()
hboxlayout.setContentsMargins(0, 0, 0, 0)
hboxlayout.addWidget(openBtn)
hboxlayout.addWidget(self.playBtn)
hboxlayout.addWidget(self.slider)
vboxlayout = QVBoxLayout()
vboxlayout.addWidget(videowidget)
vboxlayout.addLayout(hboxlayout)
vboxlayout.addWidget(self.label)
self.setLayout(vboxlayout)
self.mediaPlayer.setVideoOutput(videowidget)
self.mediaPlayer.stateChanged.connect(self.mediastate_changed)
self.mediaPlayer.positionChanged.connect(self.position_changed)
self.mediaPlayer.durationChanged.connect(self.duration_changed)
def open_file(self):
filename, _ = QFileDialog.getOpenFileName(self, "Open Video",
os.getcwd(),
("Video Files (*.avi *.mp4 *.mov)"))
if filename != '':
self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(filename)))
self.playBtn.setEnabled(True)
def play_video(self):
if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
self.mediaPlayer.pause()
else:
self.mediaPlayer.play()
def mediastate_changed(self, state):
if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
self.playBtn.setIcon(
self.style().standardIcon(QStyle.SP_MediaPause)
)
else:
self.playBtn.setIcon(
self.style().standardIcon(QStyle.SP_MediaPlay)
)
def position_changed(self, position):
self.slider.setValue(position)
def duration_changed(self, duration):
self.slider.setRange(0, duration)
def set_position(self, position):
self.mediaPlayer.setPosition(position)
Why is that?
New contributor
TLS Python is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.