Почему видео не загружается и не воспроизводится в pygame?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему видео не загружается и не воспроизводится в pygame?

Сообщение Anonymous »

У меня есть этот код от моего друга, и я ничего в коде не менял. часть кода предназначена для mp3-плеера, и он работает, но mp4-плеер не работает.
вот код видеоплеера, и да, я установил все пакеты и никаких ошибок. При загрузке видео оно не отображается на экране и кнопка воспроизведения не работает.

Код: Выделить всё

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)
введите здесь описание изображения
Почему?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-pygame
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»